मौजूदा MySQL टेबल के कॉलम पर ALTER TABLE ... ADD FOREIGN KEY स्टेटमेंट का उपयोग करके FOREIGN KEY कंस्ट्रेंट जोड़ा जा सकता है।
सिंटैक्स
ALTER TABLE table_name ADD FOREIGN KEY (column_name) REFERENCES parent_table(parent_column);
उदाहरण
Orders1 टेबल पर Cust_id कॉलम में FK जोड़ना, Customer टेबल के Cust_id (PK) को रेफरेंस करते हुए:
mysql> ALTER TABLE orders1
ADD FOREIGN KEY(Cust_id)
REFERENCES Customer(Cust_id);
Query OK, 0 rows affected (0.21 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 | | -- MUL = FK इंडेक्स
+--------------+-------------+------+-----+---------+-------+
पूर्व शर्तें
- पैरेंट टेबल (
Customer) मौजूद होनी चाहिए - पैरेंट कॉलम (
Cust_id) पर PRIMARY KEY या UNIQUE इंडेक्स होना चाहिए - डेटा टाइप समान या संगत होने चाहिए
- चाइल्ड टेबल में मौजूदा डेटा पैरेंट में मानों से मेल खाना चाहिए
- दोनों टेबल InnoDB इंजन की होनी चाहिए
नामित कंस्ट्रेंट (वैकल्पिक)
ALTER TABLE orders1 ADD CONSTRAINT fk_orders_customer FOREIGN KEY (Cust_id) REFERENCES Customer(Cust_id);
कैस्केड विकल्प
ALTER TABLE orders1 ADD FOREIGN KEY (Cust_id) REFERENCES Customer(Cust_id) ON DELETE CASCADE ON UPDATE CASCADE;
सत्यापन
SHOW CREATE TABLE orders1; -- CONSTRAINT परिभाषा दिखाएगा