Apabila kita menambah kekangan UNIK pada lajur yang sama beberapa kali, MySQL akan mencipta indeks pada lajur itu untuk bilangan kali kita menambah UNIK kekangan.
Andaikan kita mempunyai jadual "pekerja" dengan kekangan UNIK pada lajur "empid". Ini boleh disemak dengan pertanyaan berikut -
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)
Sekarang apabila kita menjalankan pertanyaan SHOW INDEX ia akan memberikan nama indeks dan hanya terdapat satu indeks, dicipta pada lajur "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)
Dengan bantuan pertanyaan berikut, kami telah menambah satu lagi kekangan UNIK pada lajur "empid" yang sama -
mysql> Alter table employee ADD UNIQUE(empid); Query OK, 0 rows affected (0.21 sec) Records: 0 Duplicates: 0 Warnings: 0
Sekarang apabila kami menjalankan pertanyaan SHOW INDEX, Ia akan memberikan nama indeks iaitu dua indeks "empid" dan "empid_2" yang dibuat pada lajur "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)
Dengan bantuan pertanyaan berikut, kami telah menambah satu lagi kekangan UNIK pada lajur "empid" yang sama -
mysql> Alter table employee ADD UNIQUE(empid); Query OK, 0 rows affected (0.21 sec) Records: 0 Duplicates: 0 Warnings: 0
Sekarang apabila kami menjalankan pertanyaan SHOW INDEX, Ia akan memberikan nama indeks, tiga indeks "empid" dan "empid_2", "empid_3" yang dibuat pada lajur "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)
Dalam pengertian ini, kita boleh mengatakan bahawa MySQL akan mencipta indeks unik pada lajur berapa kali kita menambah kekangan UNIK pada lajur itu.
Atas ialah kandungan terperinci Apakah yang berlaku jika saya menambah kekangan UNIK pada lajur yang sama beberapa kali?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!