Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Cách thêm ràng buộc FOREIGN KEY cho nhiều trường trong bảng MySQL

MySQL cho phép thêm nhiều FOREIGN KEY trên các cột khác nhau của một bảng, với điều kiện mỗi FOREIGN KEY phải tham chiếu đến một bảng cha khác nhau.

Ví dụ

Bảng customer2 có PRIMARY KEY 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       |       |
+-------------+-------------+------+-----+---------+-------+

Bảng orders1 đã có FK Cust_id tham chiếu 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    |       |
+--------------+-------------+------+-----+---------+-------+

Thêm FK thứ 2 trên cust_unq_id tham chiếu customer2:

mysql> ALTER TABLE orders1 ADD FOREIGN KEY(cust_unq_id) REFERENCES Customer2(Cust_unq_id);
Query OK, 0 rows affected (0.25 sec)

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    |       |
+--------------+-------------+------+-----+---------+-------+

Bảng orders1 giờ có 2 FK: Cust_id (tham chiếu customer) và cust_unq_id (tham chiếu customer2).