Heim  >  Artikel  >  Datenbank  >  Was passiert, wenn ich mehrmals eine UNIQUE-Einschränkung für dieselbe Spalte hinzufüge?

Was passiert, wenn ich mehrmals eine UNIQUE-Einschränkung für dieselbe Spalte hinzufüge?

WBOY
WBOYnach vorne
2023-09-01 12:33:03927Durchsuche

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

Wenn wir eine UNIQUE-Einschränkung mehrmals für dieselbe Spalte hinzufügen, erstellt MySQL einen Index für diese Spalte für die Häufigkeit, mit der wir die UNIQUE-Einschränkung hinzufügen.

Beispiel

Angenommen, wir haben eine Tabelle „employee“ mit der EINZIGARTIGEN Einschränkung für die Spalte „empid“. Dies kann mit der folgenden Abfrage überprüft werden:

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)

Wenn wir nun die Abfrage SHOW INDEX ausführen, wird der Name des Index angezeigt und es gibt nur einen Index, der für die Spalte „empid“ erstellt wurde.

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)

Mit Hilfe der folgenden Abfrage haben wir eine weitere UNIQUE-Einschränkung für dieselbe Spalte „empid“ hinzugefügt –

mysql> Alter table employee ADD UNIQUE(empid);
Query OK, 0 rows affected (0.21 sec)
Records: 0 Duplicates: 0 Warnings: 0

Wenn wir nun die Abfrage SHOW INDEX ausführen, wird der Name des Index angezeigt, d. h. für „empid“ Für die Spalte werden zwei Indizes „empid“ und „empid_2“ erstellt.

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)

Mit Hilfe der folgenden Abfrage haben wir eine weitere UNIQUE-Einschränkung für dieselbe Spalte „empid“ hinzugefügt –

mysql> Alter table employee ADD UNIQUE(empid);
Query OK, 0 rows affected (0.21 sec)
Records: 0 Duplicates: 0 Warnings: 0

Wenn wir nun die Abfrage SHOW INDEX ausführen, wird der Name des Index für die Spalte „ empid“ Die drei Indizes „empid“, „empid_2“ und „empid_3“ erstellt am „.

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)

In diesem Sinne können wir sagen, dass MySQL so oft einen eindeutigen Index für die Spalte erstellt, wie wir die UNIQUE-Einschränkung für diese Spalte hinzufügen.

Das obige ist der detaillierte Inhalt vonWas passiert, wenn ich mehrmals eine UNIQUE-Einschränkung für dieselbe Spalte hinzufüge?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen