Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

วิธีเพิ่ม FOREIGN KEY constraints ให้หลายฟิลด์ของตาราง MySQL

MySQL อนุญาตให้เพิ่ม FOREIGN KEY constraint บนหลายฟิลด์ในตาราง เงื่อนไขคือ Foreign Key แต่ละตัวใน child table ต้องอ้างอิงถึง parent table ที่ต่างกัน

ตัวอย่าง

สมมติว่ามีตาราง 'customer2' ที่มี 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       |       |
+-------------+-------------+------+-----+---------+-------+

ตาราง orders1 มี Foreign Key บน '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    |       |
+--------------+-------------+------+-----+---------+-------+

เพิ่ม Foreign Key constraint อีกตัวบน 'cust_unq_id' อ้างอิง '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    |       |
+--------------+-------------+------+-----+---------+-------+

ตาราง 'orders1' มี Foreign Key 2 ตัว: บน 'cust_id' และ 'cust_unq_id'