首頁 >資料庫 >mysql教程 >我們如何在多列上分配 FOREIGN KEY 約束?

我們如何在多列上分配 FOREIGN KEY 約束?

王林
王林轉載
2023-09-04 12:17:021117瀏覽

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

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中文網其他相關文章!

陳述:
本文轉載於:tutorialspoint.com。如有侵權,請聯絡admin@php.cn刪除