Apakah yang berlaku jika saya menambah kekangan UNIK pada lajur yang sama beberapa kali?

WBOY
Lepaskan: 2023-09-01 12:33:03
ke hadapan
932 orang telah melayarinya

如果我多次在同一列上添加 UNIQUE 约束,会发生什么情况?

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.

Contoh

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)
Salin selepas log masuk

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)
Salin selepas log masuk

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
Salin selepas log masuk
Salin selepas log masuk

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)
Salin selepas log masuk

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
Salin selepas log masuk
Salin selepas log masuk

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)
Salin selepas log masuk

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!

sumber:tutorialspoint.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!