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 क्वेरी की मदद से हम '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)
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' पर।
स्पष्टीकरण: एक टेबल में कई फॉरेन की हो सकती हैं, प्रत्येक अलग पेरेंट टेबल को रेफर करती है। यह कॉम्पोजिट फॉरेन की (एकाधिक कॉलम एक साथ एक पेरेंट को रेफर करते हैं) से अलग है।