sitelink1  
sitelink2  
extra_vars5  
extra_vars6  

MariaDB에서 테이블 내의 두 개의 컬럼을 유니크하게 만들려면 복합(다중) 유니크 인덱스를 사용해야 합니다.

이는 두 개의 컬럼의 조합이 유일하도록 강제하는 제약 조건을 설정합니다.

 

### 예제

 

예를 들어, `orders`라는 테이블이 있고, `customer_id`와 `order_id` 컬럼의 조합이 유니크해야 한다고 가정하겠습니다.

 

#### 1. 테이블 생성 시 유니크 인덱스 추가

 

```sql

CREATE TABLE orders (

    order_id INT,

    customer_id INT,

    product_name VARCHAR(100),

    quantity INT,

    PRIMARY KEY (order_id),

    UNIQUE KEY unique_customer_order (customer_id, order_id)

);

```

 

#### 2. 기존 테이블에 유니크 인덱스 추가

 

만약 이미 테이블이 존재하는 경우, 유니크 인덱스를 추가하려면 `ALTER TABLE` 명령어를 사용합니다.

 

```sql

ALTER TABLE orders

ADD CONSTRAINT unique_customer_order UNIQUE (customer_id, order_id);

```

 

### 설명

 

1. **CREATE TABLE**:

   - `UNIQUE KEY unique_customer_order (customer_id, order_id)`: 테이블을 생성할 때 `customer_id`와 `order_id`의 조합이 유일하도록 유니크 키를 설정합니다.

 

2. **ALTER TABLE**:

   - `ADD CONSTRAINT unique_customer_order UNIQUE (customer_id, order_id)`: 이미 존재하는 테이블에 대해 `customer_id`와 `order_id`의 조합이 유일하도록 유니크 제약 조건을 추가합니다.

 

이러한 설정을 통해, `customer_id`와 `order_id`의 조합이 중복되지 않도록 보장할 수 있습니다. 예를 들어, 동일한 `customer_id`와 `order_id`의 조합으로 두 개의 행을 삽입하려고 하면, MariaDB는 이를 허용하지 않고 오류를 반환합니다.

 

### 예제 실행

 

1. **테이블 생성과 유니크 인덱스 설정**:

 

```sql

CREATE TABLE orders (

    order_id INT,

    customer_id INT,

    product_name VARCHAR(100),

    quantity INT,

    PRIMARY KEY (order_id),

    UNIQUE KEY unique_customer_order (customer_id, order_id)

);

```

 

2. **데이터 삽입 시도**:

 

```sql

INSERT INTO orders (order_id, customer_id, product_name, quantity) VALUES (1, 101, 'Apple', 5);

INSERT INTO orders (order_id, customer_id, product_name, quantity) VALUES (2, 101, 'Banana', 10); -- 성공

INSERT INTO orders (order_id, customer_id, product_name, quantity) VALUES (3, 101, 'Apple', 5);  -- 성공

INSERT INTO orders (order_id, customer_id, product_name, quantity) VALUES (4, 101, 'Apple', 5);  -- 오류 발생 (customer_id와 order_id의 조합이 중복)

```

 

이렇게 하면 `customer_id`와 `order_id`의 조합이 유니크하게 유지되도록 보장할 수 있습니다.

번호 제목 글쓴이 날짜 조회 수
» [Copilot] 2개 이상의 컬럼을 unique key 로 묶는 방법 황제낙엽 2024.07.12 371
39 마지막 insert 한 row 의 seq를 취하는 함수 SELECT LAST_INSERT_ID() 황제낙엽 2024.06.05 151
38 (Bard) mysql 에서 auto_increment 인 컬럼의 다음 시퀀스를 조회하는 쿼리 - LAST_INSERT_ID() 황제낙엽 2023.08.25 97
37 HeidiSQL 에서 사용자 관리 황제낙엽 2023.06.23 108
36 SELECT 에서 대소문자 구별 방법 황제낙엽 2023.03.28 97
35 [HeidiSQL] Library libmariadb.dll could not be loaded. Please select a different one. file 황제낙엽 2021.09.10 1722
34 group by 황제낙엽 2021.01.13 97
33 order by 황제낙엽 2020.11.04 95
32 문서 내부에 검색어가 포함되었는지를 조회 황제낙엽 2020.07.23 220
31 [phpMyAdmin] 설치 및 보안설정 (How to Install and Secure phpMyAdmin on localhost for Windows) file 황제낙엽 2019.07.19 257
30 DATETIME 컬럼에 날짜 입력 예제 (java코드) 황제낙엽 2019.05.29 471
29 MySQL Database Migration Wizard 황제낙엽 2019.04.05 187
28 MySQL 워크벤치(Workbench) 황제낙엽 2019.04.05 165
27 MySQL을 로컬이 아닌 외부에서 접속하기 위한 확인 사항 황제낙엽 2018.11.30 883
26 root 암호 분실시 초기화 방법 황제낙엽 2017.04.06 2868
25 MySQL UPDATE의 활용 file 황제낙엽 2017.07.08 185
24 우분투, MariaDB, phpmyadmin 설치하기 file 황제낙엽 2017.01.31 400
23 MSI로 설치 file 황제낙엽 2017.01.26 179
22 ZIP으로 설치 file 황제낙엽 2017.01.26 182
21 세상에 공짜는 없다(MySQL 의 대안) file 황제낙엽 2016.05.24 237