ALTER TABLE ... ADD UNIQUE 인덱스명(컬럼1, 컬럼2)로 기존 테이블에 복합 유니크 제약(인덱스)을 추가할 수 있습니다.
테이블 생성
mysql> CREATE TABLE DemoTable1811 (
-> FirstName VARCHAR(20),
-> LastName VARCHAR(20)
-> );
Query OK, 0 rows affected (0.00 sec)
복합 유니크 인덱스 추가
mysql> ALTER TABLE DemoTable1811 ADD UNIQUE unique_index_first_last_name(FirstName, LastName); Query OK, 0 rows affected (0.00 sec) Records: 0 Duplicates: 0 Warnings: 0
데이터 삽입 (중복 테스트)
mysql> INSERT INTO DemoTable1811 VALUES('John','Smith');
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO DemoTable1811 VALUES('John','Doe');
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO DemoTable1811 VALUES('Adam','Smith');
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO DemoTable1811 VALUES('John','Doe');
ERROR 1062 (23000): Duplicate entry 'John-Doe' for key 'unique_index_first_last_name'
데이터 조회
mysql> SELECT * FROM DemoTable1811;
+-----------+----------+ | FirstName | LastName | +-----------+----------+ | Adam | Smith | | John | Doe | | John | Smith | +-----------+----------+ 3 rows in set (0.00 sec)
핵심: (FirstName, LastName) 조합이 유니크해야 함. 'John'+'Doe' 두 번째 삽입 시 에러. ADD UNIQUE는 인덱스 생성과 제약 추가를 동시에 수행. DROP INDEX 인덱스명으로 제거 가능.