Ràng buộc UNIQUE trên nhiều cột VARCHAR trong MySQL
Để đảm bảo sự kết hợp duy nhất giữa các cột, sử dụng UNIQUE constraint.
Cú pháp
ALTER TABLE ten_bang ADD UNIQUE(cot1, cot2, ...N);
Ví dụ: Unique trên EmployeeName + EmployeeCountryName
mysql> create table DemoTable1598 (
EmployeeId int,
EmployeeName varchar(20),
EmployeeCountryName varchar(20)
);
Query OK, 0 rows affected (0.52 sec)
mysql> alter table DemoTable1598 add unique(EmployeeName,EmployeeCountryName); Query OK, 0 rows affected (0.55 sec) Records: 0 Duplicates: 0 Warnings: 0
Thử chèn dữ liệu
mysql> insert into DemoTable1598 values(101,'Adam','AUS'); -- OK mysql> insert into DemoTable1598 values(102,'John','US'); -- OK mysql> insert into DemoTable1598 values(103,'Adam','US'); -- OK (khác quốc gia) mysql> insert into DemoTable1598 values(104,'Adam','AUS'); -- LỖI: Duplicate entry 'Adam-AUS'
Kết quả
ERROR 1062 (23000): Duplicate entry 'Adam-AUS' for key 'EmployeeName'
Dữ liệu cuối cùng:
+------------+--------------+---------------------+ | EmployeeId | EmployeeName | EmployeeCountryName | +------------+--------------+---------------------+ | 101 | Adam | AUS | | 102 | John | US | | 103 | Adam | US | +------------+--------------+---------------------+
Giải thích: Ràng buộc UNIQUE trên (EmployeeName, EmployeeCountryName) cho phép trùng tên nếu quốc gia khác nhau, nhưng cấm trùng cả hai cột cùng lúc.