Heim >Datenbank >MySQL-Tutorial >Wie können wir FOREIGN KEY-Einschränkungen auf mehrere Spalten verteilen?
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.
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)
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)
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)
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!