Khi chúng ta thêm ràng buộc DUY NHẤT trên cùng một cột nhiều lần thì MySQL sẽ tạo chỉ mục trên cột đó trong một số lần chúng ta đã thêm ràng buộc DUY NHẤT.
Ví dụ
Giả sử chúng ta có bảng "worker" trong đó chúng ta có ràng buộc DUY NHẤT trên cột "empid". Nó có thể được kiểm tra dưới dạng truy vấn sau -
mysql> Describe employee; +------------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +------------+-------------+------+-----+---------+-------+ | empid | int(11) | YES | UNI | NULL | | | first_name | varchar(20) | YES | | NULL | | | last_name | varchar(20) | YES | | NULL | | +------------+-------------+------+-----+---------+-------+ 3 rows in set (0.12 sec)
Bây giờ, khi chúng tôi chạy truy vấn SHOW INDEX, nó cung cấp tên của chỉ mục, chỉ một chỉ mục, được tạo trên cột ‘empid’.
mysql> Show index from employee\G; *************************** 1. row *************************** Table: employee Non_unique: 0 Key_name: empid Seq_in_index: 1 Column_name: empid Collation: A Cardinality: 0 Sub_part: NULL Packed: NULL Null: YES Index_type: BTREE Comment: Index_comment: 1 row in set (0.00 sec)
Với sự trợ giúp của truy vấn sau, chúng tôi đã thêm một ràng buộc DUY NHẤT nữa trên cùng một cột ‘empid’ -
mysql> Alter table employee ADD UNIQUE(empid); Query OK, 0 rows affected (0.21 sec) Records: 0 Duplicates: 0 Warnings: 0
Bây giờ, khi chúng tôi chạy truy vấn SHOW INDEX, nó cung cấp tên của chỉ mục, hai chỉ mục ‘empid’ và ‘empid_2’, được tạo trên cột ‘empid’.
mysql> Show index from employee12\G; *************************** 1. row *************************** Table: employee Non_unique: 0 Key_name: empid Seq_in_index: 1 Column_name: empid Collation: A Cardinality: 0 Sub_part: NULL Packed: NULL Null: YES Index_type: BTREE Comment: Index_comment: *************************** 2. row *************************** Table: employee Non_unique: 0 Key_name: empid_2 Seq_in_index: 1 Column_name: empid Collation: A Cardinality: 0 Sub_part: NULL Packed: NULL Null: YES Index_type: BTREE Comment: Index_comment: 2 rows in set (0.00 sec)
Với sự trợ giúp của truy vấn sau, chúng tôi đã thêm một ràng buộc DUY NHẤT nữa trên cùng một cột ‘empid’ -
mysql> Alter table employee ADD UNIQUE(empid); Query OK, 0 rows affected (0.21 sec) Records: 0 Duplicates: 0 Warnings: 0
Bây giờ, khi chúng tôi chạy truy vấn SHOW INDEX, nó cung cấp tên của chỉ mục, ba chỉ mục ‘empid’ và ‘empid_2’, ‘empid_3’được tạo trên cột‘ empid ’.
mysql> Alter table employee ADD UNIQUE(empid); Query OK, 0 rows affected (0.30 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> Show index from employee\G; *************************** 1. row *************************** Table: employee Non_unique: 0 Key_name: empid Seq_in_index: 1 Column_name: empid Collation: A Cardinality: 0 Sub_part: NULL Packed: NULL Null: YES Index_type: BTREE Comment: Index_comment: *************************** 2. row *************************** Table: employee Non_unique: 0 Key_name: empid_2 Seq_in_index: 1 Column_name: empid Collation: A Cardinality: 0 Sub_part: NULL Packed: NULL Null: YES Index_type: BTREE Comment: Index_comment: *************************** 3. row *************************** Table: employee Non_unique: 0 Key_name: empid_3 Seq_in_index: 1 Column_name: empid Collation: A Cardinality: 0 Sub_part: NULL Packed: NULL Null: YES Index_type: BTREE Comment: Index_comment: 3 rows in set (0.00 sec)
Theo nghĩa này, chúng ta có thể nói rằng MySQL sẽ tạo các chỉ mục duy nhất trên cột số lần chúng ta đã thêm ràng buộc DUY NHẤT trên cột đó.