Heim > Datenbank > MySQL-Tutorial > Wie können wir FOREIGN KEY-Einschränkungen auf mehrere Spalten verteilen?

Wie können wir FOREIGN KEY-Einschränkungen auf mehrere Spalten verteilen?

王林
Freigeben: 2023-09-04 12:17:02
nach vorne
1140 Leute haben es durchsucht

我们如何在多列上分配 FOREIGN KEY 约束?

MySQL ermöglicht es uns, FOREIGN KEY-Einschränkungen für mehrere Spalten in einer Tabelle hinzuzufügen. Voraussetzung ist, dass jeder Fremdschlüssel in der untergeordneten Tabelle auf eine andere übergeordnete Tabelle verweisen muss.

Beispiel

Angenommen, wir haben eine Tabelle mit dem Namen „customer2“, die eine Primärschlüsseleinschränkung für das Feld „cust_unq_id“ hat, wie unten gezeigt –

mysql> describe customer2;
+-------------+-------------+------+-----+---------+-------+
| Field       | Type        | Null | Key | Default | Extra |
+-------------+-------------+------+-----+---------+-------+
| cust_id     | int(11)     | YES  |     | NULL    |       |
| First_name  | varchar(20) | YES  |     | NULL    |       |
| Last_name   | varchar(20) | YES  |     | NULL    |       |
| City        | varchar(10) | YES  |     | NULL    |       |
| cust_unq_id | int(11)     | NO   | PRI | 0       |       |
+-------------+-------------+------+-----+---------+-------+
5 rows in set (0.06 sec)
Nach dem Login kopieren

Wir haben bereits eine Tabelle mit dem Namen „orders1“, die bereits in Es gibt eine Fremdschlüsseleinschränkung das Feld „Cust_id“, das auf die übergeordnete Tabelle „customer“ verweist.

mysql> describe orders1;
+--------------+-------------+------+-----+---------+-------+
| Field        | Type        | Null | Key | Default | Extra |
+--------------+-------------+------+-----+---------+-------+
| order_id     | int(11)     | NO   | PRI | NULL    |       |
| Product_name | varchar(25) | YES  |     | NULL    |       |
| orderdate    | date        | YES  |     | NULL    |       |
| Cust_id      | int(11)     | YES  | MUL | NULL    |       |
| cust_unq_id  | int(11)     | YES  |     | NULL    |       |
+--------------+-------------+------+-----+---------+-------+
5 rows in set (0.04 sec)
Nach dem Login kopieren

Jetzt können wir mit Hilfe der folgenden ALTER TABLE-Abfrage eine weitere Fremdschlüsseleinschränkung für das Feld „cust_unq_id“ hinzufügen, die auf die übergeordnete Tabelle „customer2“ verweist.

mysql> Alter table orders1 add FOREIGN KEY(cust_unq_id) REFERENCES Customer2(Cust_unq_id);
Query OK, 0 rows affected (0.25 sec)
Records: 0 Duplicates: 0 Warnings: 0

mysql> describe orders1;
+--------------+-------------+------+-----+---------+-------+
| Field        | Type        | Null | Key | Default | Extra |
+--------------+-------------+------+-----+---------+-------+
| order_id     | int(11)     | NO   | PRI | NULL    |       |
| Product_name | varchar(25) | YES  |     | NULL    |       |
| orderdate    | date        | YES  |     | NULL    |       |
| Cust_id      | int(11)     | YES  | MUL | NULL    |       |
| cust_unq_id  | int(11)     | YES  | MUL | NULL    |       |
+--------------+-------------+------+-----+---------+-------+
5 rows in set (0.06 sec)
Nach dem Login kopieren

Wie aus der obigen Ergebnismenge ersichtlich ist, Die Tabelle „orders1“ hat zwei Fremdschlüsseleinschränkungen, eine für „cust_id“ und die andere für die Fremdschlüsseleinschränkung „cust_unq_id“.

Das obige ist der detaillierte Inhalt vonWie können wir FOREIGN KEY-Einschränkungen auf mehrere Spalten verteilen?. 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