Heim > Datenbank > MySQL-Tutorial > Hauptteil

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

WBOY
Freigeben: 2023-09-01 12:33:03
nach vorne
977 Leute haben es durchsucht

如果我多次在同一列上添加 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)
Nach dem Login kopieren

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)
Nach dem Login kopieren

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
Nach dem Login kopieren
Nach dem Login kopieren

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)
Nach dem Login kopieren

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
Nach dem Login kopieren
Nach dem Login kopieren

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)
Nach dem Login kopieren

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!

Quelle:tutorialspoint.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!