Giới thiệu
Để đảm bảo sự kết hợp của 2 (hoặc nhiều) cột là duy nhất (ví dụ: FirstName + PhoneNumber không được trùng), dùng ALTER TABLE ... ADD UNIQUE.
Cú pháp
ALTER TABLE your_table ADD UNIQUE constraint_name (col1, col2, ...);
Ví dụ minh họa
Tạo bảng
mysql> CREATE TABLE DemoTable (
StudentId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
StudentFirstName VARCHAR(100),
StudentLastName VARCHAR(100),
StudentAge INT,
StudentPhoneNumber VARCHAR(20)
);
Thêm unique constraint cho cặp (FirstName, PhoneNumber)
mysql> ALTER TABLE DemoTable ADD UNIQUE DemoTable_unique_StudentFirstName_StudentPhoneNumber (StudentFirstName, StudentPhoneNumber);
Test insert
mysql> INSERT INTO DemoTable (StudentFirstName, StudentLastName, StudentAge, StudentPhoneNumber)
VALUES ('John', 'Doe', 21, '9878567878'); -- OK
mysql> INSERT INTO DemoTable (StudentFirstName, StudentLastName, StudentAge, StudentPhoneNumber)
VALUES ('John', 'Smith', 23, '7654674545'); -- OK (FirstName trùng nhưng Phone khác)
mysql> INSERT INTO DemoTable (StudentFirstName, StudentLastName, StudentAge, StudentPhoneNumber)
VALUES ('John', 'Brown', 21, '9878567878'); -- ERROR 1062: Duplicate entry 'John-9878567878'
Kết quả bảng
+-----------+------------------+-----------------+------------+--------------------+ | StudentId | StudentFirstName | StudentLastName | StudentAge | StudentPhoneNumber | +-----------+------------------+-----------------+------------+--------------------+ | 1 | John | Doe | 21 | 9878567878 | | 2 | John | Smith | 23 | 7654674545 | +-----------+------------------+-----------------+------------+--------------------+
Lưu ý
- Unique constraint tạo ngầm một unique index.
- Cho phép nhiều giá trị NULL (theo SQL standard), trừ khi cột NOT NULL.
- Tên constraint nên đặt có ý nghĩa:
uk_table_col1_col2hoặcunique_table_col1_col2. - Để xóa:
ALTER TABLE DemoTable DROP INDEX constraint_name;