MySQL विदेशी कुंजी बाधा
MySQL विदेशी कुंजी बाधा
बाधाओं का FOREIGN KEY
उपयोग उन क्रियाओं को रोकने के लिए किया जाता है जो तालिकाओं के बीच के लिंक को नष्ट कर देती हैं।
A FOREIGN KEY
एक तालिका में एक फ़ील्ड (या फ़ील्ड का संग्रह) है, जो PRIMARY KEY
किसी अन्य तालिका में संदर्भित करता है।
विदेशी कुंजी वाली तालिका को चाइल्ड टेबल कहा जाता है, और प्राथमिक कुंजी वाली तालिका को संदर्भित या मूल तालिका कहा जाता है।
निम्नलिखित दो तालिकाओं को देखें:
व्यक्तियों की तालिका
PersonID | LastName | FirstName | Age |
---|---|---|---|
1 | Hansen | Ola | 30 |
2 | Svendson | Tove | 23 |
3 | Pettersen | Kari | 20 |
आदेश तालिका
OrderID | OrderNumber | PersonID |
---|---|---|
1 | 77895 | 3 |
2 | 44678 | 3 |
3 | 22456 | 2 |
4 | 24562 | 1 |
ध्यान दें कि "आदेश" तालिका में "व्यक्ति आईडी" कॉलम "व्यक्ति" तालिका में "व्यक्ति आईडी" कॉलम को इंगित करता है।
"व्यक्ति" तालिका में "व्यक्ति आईडी" कॉलम "व्यक्ति" तालिका में है PRIMARY KEY
।
"आदेश" तालिका में "व्यक्ति आईडी" कॉलम "आदेश" तालिका में है
FOREIGN KEY
।
बाधा अमान्य डेटा को FOREIGN KEY
विदेशी कुंजी कॉलम में डालने से रोकती है, क्योंकि इसे मूल तालिका में निहित मानों में से एक होना चाहिए।
टेबल बनाने पर विदेशी कुंजी
जब "आदेश" तालिका बनाई जाती है, तो निम्न SQL FOREIGN KEY
"PersonID" कॉलम पर बनाता है:
CREATE TABLE Orders
(
OrderID int NOT NULL,
OrderNumber int NOT NULL,
PersonID int,
PRIMARY KEY (OrderID),
FOREIGN KEY (PersonID) REFERENCES Persons(PersonID)
);
एक बाधा के नामकरण की अनुमति देने के लिए, और एक से अधिक स्तंभों पर FOREIGN KEY
एक बाधा को परिभाषित करने के लिए, निम्न SQL सिंटैक्स का उपयोग करें:
FOREIGN KEY
CREATE TABLE Orders
(
OrderID int NOT NULL,
OrderNumber int NOT NULL,
PersonID int,
PRIMARY KEY (OrderID),
CONSTRAINT FK_PersonOrder FOREIGN KEY (PersonID)
REFERENCES Persons(PersonID)
);
ALTER TABLE . पर विदेशी कुंजी
FOREIGN KEY
जब "आदेश" तालिका पहले से ही बनाई गई हो, तो "पर्सनआईडी" कॉलम पर एक बाधा बनाने के लिए, निम्नलिखित एसक्यूएल का उपयोग करें:
ALTER TABLE Orders
ADD FOREIGN KEY (PersonID)
REFERENCES Persons(PersonID);
एक बाधा के नामकरण की अनुमति देने के लिए, और एक से अधिक स्तंभों पर FOREIGN KEY
एक बाधा को परिभाषित करने के लिए, निम्न SQL सिंटैक्स का उपयोग करें:
FOREIGN KEY
ALTER TABLE Orders
ADD CONSTRAINT FK_PersonOrder
FOREIGN KEY (PersonID)
REFERENCES Persons(PersonID);
एक विदेशी कुंजी बाधा छोड़ें
FOREIGN KEY
एक बाधा छोड़ने के लिए, निम्न SQL का उपयोग करें:
ALTER TABLE Orders
DROP FOREIGN KEY FK_PersonOrder;