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.
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!