MySQL允許我們在表格中的多個欄位上新增FOREIGN KEY約束。條件是子表中的每個外鍵必須引用不同的父表。
假設我們有一個名為'customer2'的表,該表在欄位'cust_unq_id'上有一個主鍵約束,如下所示-
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)
我們已經有一個名為orders1的表,它已經在欄位'Cust_id'上有一個外鍵約束,引用到父表'customer'。
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)
現在,借助以下ALTER TABLE 查詢,我們可以在引用父表「customer2」的欄位「cust_unq_id」上新增另一個外鍵約束
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)
從上面的結果集中可以看出,「orders1」表有兩個外鍵約束,一個在「cust_id」上,另一個在「cust_unq_id」外鍵約束上。
以上是我們如何在多列上分配 FOREIGN KEY 約束?的詳細內容。更多資訊請關注PHP中文網其他相關文章!