यह ट्यूटोरियल सिंटैक्स और उदाहरणों के साथ SQL सर्वर में फॉरेन की फॉरेन की का उपयोग करने का तरीका बताता है।
SQL सर्वर में विदेशी कुंजी क्या है?
विदेशी कुंजियों का उपयोग SQL सर्वर डेटाबेस में संदर्भों को बढ़ाने के लिए किया जाता है। एक विदेशी कुंजी का अर्थ है कि इस तालिका का मान किसी अन्य तालिका में दिखाई देना चाहिए।
संदर्भ तालिका को पैरेंट टेबल कहा जाता है, जबकि विदेशी कुंजी वाली तालिका को चाइल्ड टेबल कहा जाता है। चाइल्ड टेबल में विदेशी कुंजियाँ आमतौर पर मूल तालिका में प्राथमिक कुंजी प्राथमिक कुंजी को संदर्भित करती हैं।
विदेशी कुंजियाँ CREATE TABLE कमांड या ALTER TABLE कमांड से बनाई जा सकती हैं।
तालिका बनाएं कमांड का उपयोग करके एक विदेशी कुंजी बनाएं
सिंटैक्स
CREATE TABLE bang_con ( cot1 kieudulieu [ NULL | NOT NULL ], cot2 kieudulieu [ NULL | NOT NULL ], … CONSTRAINT fk_ten FOREIGN KEY (cot_con1, cot_con2, … cot_con_n) REFERENCES bang_me (cot_me1, cot_me2, … cot_me_n) [ ON DELETE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ] [ ON UPDATE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ] );
bang_con
उस चाइल्ड टेबल का नाम जिसे आप बनाना चाहते हैं।
cot1, cot2
वह कॉलम जिसे आप तालिका में बनाना चाहते हैं। प्रत्येक कॉलम में 1 डेटा प्रकार होता है, जिसमें NULL या NOT NULL मान शामिल होने चाहिए, अन्यथा डिफ़ॉल्ट NULL होता है।
SQL सर्वर में डेटा प्रकार
fk_ten
बनाने के लिए विदेशी कुंजी बाधा का नाम।
cot_con1, cot_con2, . cot_con_n
bang_con का कॉलम, bang_me की प्राथमिक कुंजी को संदर्भित करना चाहता है।
bang_me
पैरेंट टेबल के नाम में प्राथमिक कुंजी का उपयोग किया जाता है जिसका उपयोग bang_con में किया जाता है।
cot_me1, cot_me2, . cot_me_n
वह कॉलम जो bang_me में प्राथमिक कुंजी बनाता है। विदेशी कुंजियाँ डेटा और कॉलम cot_con1, cot_con2, के बीच अवरोध पैदा करेंगी। cot_con_n में bang_con.
हटाएं पर
Option. इंगित करता है कि जब मूल डेटा हटा दिया जाता है तो चाइल्ड डेटा के साथ क्या करना है। नो एक्शन, कैस्केड, सेट न्यूल और सेट डिफॉल्ट विकल्प हैं।
अपडेट पर
Option. यह बताता है कि पैरेंट डेटा अपडेट होने पर चाइल्ड डेटा का क्या करना है। नो एक्शन, कैस्केड, सेट न्यूल और सेट डिफॉल्ट विकल्प हैं।
कोई कार्रवाई नहीं
ON DELETE या ON UPDATE के साथ प्रयोग करें, यानी जब पैरेंट डेटा डिलीट या अपडेट हो जाए तो चाइल्ड डेटा के साथ कुछ भी न करें।
CASCADE
ON DELETE या ON UPDATE के साथ प्रयोग करें, जिसका अर्थ है कि पैरेंट डेटा के डिलीट या अपडेट होने पर चाइल्ड डेटा डिलीट या अपडेट हो जाता है।
शून्य सेट करें
ON DELETE या ON UPDATE के साथ प्रयोग करें, जिसका अर्थ है कि जब पैरेंट डेटा हटा दिया जाता है या अपडेट किया जाता है, तो चाइल्ड डेटा NULL पर सेट हो जाता है।
डिफ़ॉल्ट सेट करें
ON DELETE या ON UPDATE के साथ प्रयोग करें, जिसका अर्थ है कि जब पैरेंट डेटा हटा दिया जाता है या अपडेट किया जाता है, तो चाइल्ड डेटा डिफ़ॉल्ट मान पर सेट हो जाता है।
- एसक्यूएल सर्वर में फॉरेन की (कैस्केड डिलीट)
- एसक्यूएल सर्वर में विदेशी कुंजी (शून्य सेट करें) विदेशी कुंजी
उदाहरण के लिए
CREATE TABLE sanpham (id_sanpham INT PRIMARY KEY, ten_sanpham VARCHAR(50) NOT NULL, phan_loai VARCHAR(25) ); CREATE TABLE hangtonkho ( id_hangtonkho INT PRIMARY KEY, id_sanpham INT NOT NULL, soluong INT, luong_toithieu INT, luong_toida INT, CONSTRAINT fk_htk_id_sanpham FOREIGN KEY (id_sanpham) REFERENCES sanpham (id_sanpham) );
उपरोक्त उदाहरण में, हम id_sanpham में फ़ील्ड्स से युक्त प्राथमिक कुंजी के साथ मूल तालिका, sanfham तालिका बनाते हैं। अगला हैंगटनखो उप तालिका है।
हैंगटनखो टेबल की फॉरेन की बनाने के लिए उपयोग किए जाने वाले CREATE TABLE स्टेटमेंट को fk_htk_id_sanpham नाम दिया गया है। विदेशी कुंजी hangtonkho तालिका में id_sanpham स्तंभ और sanpham तालिका में id_sanpham के बीच की कड़ी बनाती है।
उपरोक्त उदाहरण दिखाता है कि 1 कॉलम वाली विदेशी कुंजी कैसे बनाई जाती है। अब 1 से अधिक सूचना फ़ील्ड के साथ एक विदेशी कुंजी बनाएं।
उदाहरण के लिए
CREATE TABLE sanpham ( ten_sanpham VARCHAR(50) NOT NULL, diadiem VARCHAR(50) NOT NULL, phanloai VARCHAR(25) CONSTRAINT sanpham_pk PRIMARY KEY (ten_sanpham, diadiem) );
CREATE TABLE hangtonkho ( id_hangtonkho INT PRIMARY KEY, ten_sanpham VARCHAR(50) NOT NULL, diadiem VARCHAR(50) NOT NULL, soluong INT, luong_toithieu INT, luong_toida INT, CONSTRAINT fk_htk_sanpham FOREIGN KEY (ten_sanpham, diadiem) REFERENCES sanpham (ten_sanpham, diadiem) );
इस उदाहरण में, sanfham पैरेंट टेबल में दो-स्तंभ प्राथमिक कुंजी ten_sanpham और diadiem है। चाइल्ड टेबल और विदेशी कुंजियाँ इन दो स्तंभों को अवश्य देखें।
ALTER TABLE कमांड का उपयोग करके एक विदेशी कुंजी बनाएं
सिंटैक्स
ALTER TABLE bang_con ADD CONSTRAINT fk_ten FOREIGN KEY (cot_con1, cot_con2, … cot_con_n) REFERENCES bang_me (cot_me1, cot_me2, … cot_me_n);
bang_con
उस चाइल्ड टेबल का नाम जिसे आप बनाना चाहते हैं।
fk_ten
बनाने के लिए विदेशी कुंजी बाधा का नाम।
cot_con1, cot_con2, . cot_con_n
bang_con का कॉलम, bang_me की प्राथमिक कुंजी को संदर्भित करना चाहता है।
bang_me
पैरेंट टेबल के नाम में प्राथमिक कुंजी का उपयोग किया जाता है जिसका उपयोग bang_con में किया जाता है।
cot_me1, cot_me2, . cot_me_n
वह कॉलम जो bang_me में प्राथमिक कुंजी बनाता है। विदेशी कुंजियाँ डेटा और कॉलम cot_con1, cot_con2, के बीच अवरोध पैदा करेंगी। cot_con_n में bang_con.
उदाहरण के लिए
ALTER TABLE hangtonkho ADD CONSTRAINT fk_htk_id_sanpham FOREIGN KEY (id_sanpham) REFERENCES sanpham (id_sanpham);
यह उदाहरण हैंगटनखो तालिका में विदेशी कुंजी बनाता है जिसे fk_htk_id_sanpham कहा जाता है, जो id_sanpham कॉलम के आधार पर sanpham तालिका को संदर्भित करता है।
आप नीचे दिए गए उदाहरण के अनुसार 1 से अधिक फ़ील्ड के साथ विदेशी कुंजियाँ बना सकते हैं।
ALTER TABLE hangtonkho ADD CONSTRAINT fk_htk_sanpham FOREIGN KEY (ten_sanpham, diadiem) REFERENCES sanpham (ten_sanpham, diadiem);
उपरोक्त उदाहरण हैंगटनखो टेबल के लिए fk_htk_sanpham नामक एक विदेशी कुंजी बनाता है, जो दस_सानफम और डायडीम कॉलम पर आधारित डैशबोर्ड को संदर्भित करता है।