Khái niệm
Mỗi quan hệ có một hoặc nhiều candidate key. Một trong số đó được chọn làm Primary Key. Các candidate key đều đủ điều kiện làm Primary Key. Để triển khai: đặt UNIQUE KEY trên nhiều cột.
Cú pháp
ALTER TABLE yourTableName
ADD UNIQUE KEY anyName(yourColumnName1, yourColumnName2);
Ví dụ
mysql> CREATE TABLE DemoTable1400 (
-> Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> Name VARCHAR(40),
-> Age INT
-> );
Query OK, 0 rows affected (0.50 sec)
mysql> ALTER TABLE DemoTable1400
-> ADD UNIQUE KEY name_age_unique(Name, Age);
Query OK, 0 rows affected (0.67 sec)
Thử chèn dữ liệu trùng (Name, Age)
mysql> INSERT INTO DemoTable1400(Name, Age) VALUES('Chris', 23); -- OK
mysql> INSERT INTO DemoTable1400(Name, Age) VALUES('Chris', 23); -- ERROR 1062 Duplicate entry
mysql> INSERT INTO DemoTable1400(Name, Age) VALUES('David', 23); -- OK
mysql> INSERT INTO DemoTable1400(Name, Age) VALUES('Chris', 24); -- OK
Dữ liệu cuối
mysql> SELECT * FROM DemoTable1400;
+----+-------+------+
| Id | Name | Age |
+----+-------+------+
| 1 | Chris | 23 |
| 4 | Chris | 24 |
| 3 | David | 23 |
+----+-------+------+
Kết luận: Cặp (Name, Age) là candidate key (unique), ngăn chặn trùng lặp cặp giá trị này.