MySQL में ALTER TABLE का उपयोग करके विदेशी कुंजी बनाना
विदेशी कुंजी बनाने का सही सिंटैक्स:
सिंटैक्स
ALTER TABLE yourSecondTableName ADD CONSTRAINT yourConstraintName FOREIGN KEY(yourForeignKeyColumnName) REFERENCES yourFirstTableName(yourPrimaryKeyColumnName);
उदाहरण
पहले डिपार्टमेंट टेबल (पैरेंट):
mysql> create table Department_Table (
-> Department_Id int not null auto_increment primary key,
-> Department_Name varchar(30)
-> );
फिर एम्प्लॉई टेबल (चाइल्ड):
mysql> create table Employee_Table (
-> EmployeeID int not null auto_increment primary key,
-> EmployeeName varchar(80),
-> Job varchar(30),
-> Department_Id int not null
-> );
नोट: केवल Department_Id int not null references department(departmentID) लिखने से विदेशी कुंजी नहीं बनती। यह केवल एक टिप्पणी की तरह काम करता है।
विदेशी कुंजी जोड़ें:
mysql> alter table Employee_Table
-> ADD CONSTRAINT fk_Department_Id
-> FOREIGN KEY(Department_Id)
-> REFERENCES Department_Table(Department_Id);
महत्वपूर्ण बिंदु
- रेफरेंस कॉलम (Department_Table.Department_Id) प्राइमरी की या यूनिक की होना चाहिए
- दोनों कॉलम का डेटा प्रकार समान होना चाहिए
- InnoDB स्टोरेज इंजन आवश्यक है (MyISAM विदेशी कुंजी का समर्थन नहीं करता)
CONSTRAINTनाम वैकल्पिक है लेकिन अनुशंसित है
कैस्केड विकल्प
FOREIGN KEY(Department_Id) REFERENCES Department_Table(Department_Id)
ON DELETE CASCADE
ON UPDATE CASCADE
ON DELETE CASCADE: पैरेंट डिलीट होने पर चाइल्ड भी डिलीटON UPDATE CASCADE: पैरेंट अपडेट होने पर चाइल्ड भी अपडेट- अन्य विकल्प:
SET NULL,RESTRICT,NO ACTION