Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Thêm khóa duy nhất cho bảng đã có dữ liệu trùng

Dùng ALTER TABLE ... ADD CONSTRAINT ... UNIQUE.

Cú pháp:

ALTER TABLE yourTableName ADD CONSTRAINT yourConstraintName UNIQUE(yourColumnName1,yourColumnName2,...);

Tạo bảng:

mysql> create table MovieCollectionDemo
-> (
-> MovieId int,
-> MovieDirectorName varchar(200),
-> NumberOfSongs int unsigned
-> );
Query OK, 0 rows affected (0.62 sec)

Kiểm tra (chưa có UNIQUE):

mysql> desc MovieCollectionDemo;

Kết quả:

+-------------------+------------------+------+-----+---------+-------+
| Field             | Type             | Null | Key | Default | Extra |
+-------------------+------------------+------+-----+---------+-------+
| MovieId           | int(11)          | YES  |     | NULL    |       |
| MovieDirectorName | varchar(200)     | YES  |     | NULL    |       |
| NumberOfSongs     | int(10) unsigned | YES  |     | NULL    |       |
+-------------------+------------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

Thêm UNIQUE cho MovieId:

mysql> alter table MovieCollectionDemo add constraint uni_moviecollectio unique(MovieId);
Query OK, 0 rows affected (0.46 sec)
Records: 0 Duplicates: 0 Warnings: 0

Kiểm tra lại (hiện "UNI"):

+-------------------+------------------+------+-----+---------+-------+
| Field             | Type             | Null | Key | Default | Extra |
+-------------------+------------------+------+-----+---------+-------+
| MovieId           | int(11)          | YES  | UNI | NULL    |       |
| MovieDirectorName | varchar(200)     | YES  |     | NULL    |       |
| NumberOfSongs     | int(10) unsigned | YES  |     | NULL    |       |
+-------------------+------------------+------+-----+---------+-------+
3 rows in set (0.02 sec)

Lưu ý: nếu dữ liệu đã trùng, lệnh sẽ báo lỗi.