निम्न ट्यूटोरियल SQL सर्वर में सेट नल ऑन डिलीट बाधा के साथ विदेशी कुंजी विदेशी कुंजी की व्याख्या करेगा।
SQL सर्वर में सेट न्यूल ऑन डिलीट के साथ विदेशी कुंजी क्या है?
विदेशी कुंजियाँ डिलीट पर नल सेट करने के लिए बाध्य हैं, जिसका अर्थ है कि जब पैरेंट टेबल में कोई रिकॉर्ड हटा दिया जाता है, तो विदेशी कुंजी मान फ़ील्ड में चाइल्ड टेबल में संबंधित रिकॉर्ड सेट किया जाएगा शून्य करने के लिए। चाइल्ड टेबल में लिखी गई टेबल को SQL सर्वर से डिलीट नहीं किया जाएगा।
विदेशी कुंजियाँ बशर्ते कि हटाए जाने पर NULL मान CREATE TABLE या ALTER TABLE स्टेटमेंट के साथ बनाया जा सकता है।
CREATE TABLE स्टेटमेंट के साथ हटाए जाने पर NULL मान सेट करने के लिए बाधा के साथ विदेशी कुंजी बनाएं
सिंटैक्स
CREATETABLE 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 SET NULL
[ 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.
ON DELETE SET NULL
जब पैरेंट टेबल का डेटा हटा दिया जाता है, तो चाइल्ड टेबल में डेटा NULL पर सेट हो जाएगा। उप-डेटा हटाया नहीं गया है।
अपडेट पर
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,
soluong INT,
luong_toithieu INT,
luong_toida INT,
CONSTRAINT fk_htk_id_sanpham
FOREIGN KEY (id_sanpham)
REFERENCES sanpham (id_sanpham)
ON DELETE SET NULL
);
इस उदाहरण में, हमने सूचना क्षेत्र id_sanpham सहित प्राथमिक कुंजी के साथ मूल तालिका, sanpham बनाई है। फिर हैंगटनखो नाम की एक चाइल्ड टेबल है जिसमें विलोपन बाधा के साथ एक विदेशी कुंजी है। CREATE TABLE स्टेटमेंट हैंगटनखो टेबल पर fk_htk_id_sanpham नाम की एक विदेशी कुंजी बनाता है। विदेशी कुंजी hangtonkho तालिका में id_sanpham स्तंभ और sanfham तालिका में id_sanpham के बीच संबंध बनाती है।
यह विदेशी कुंजी SQL सर्वर को यह बताने के लिए DELETE SET NULL पर निर्दिष्ट है कि जब पैरेंट टेबल में डेटा है, तो चाइल्ड टेबल में संबंधित रिकॉर्ड मान को NULL पर सेट करना आवश्यक है। हटा दिया गया। इस उदाहरण में, जब id_sanpham को तालिका से हटा दिया जाता है, तो id_sanpham का उपयोग करते हुए hangtonkho तालिका में संबंधित रिकॉर्ड NULL पर सेट हो जाएगा।
यह ध्यान रखना महत्वपूर्ण है कि क्योंकि hangtonkho तालिका में id_sanpham कॉलम NULL पर सेट किया जाएगा, यह सुनिश्चित करना आवश्यक है कि इस कॉलम को NULL मान प्राप्त करने की अनुमति है। यदि क्रिएटा के साथ बनाए जाने पर NOT NULL पर सेट किया जाता है, तो निम्न त्रुटि का सामना करना पड़ेगा।
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)
ON DELETE SET NULL
);
Msg 1761, Level 16, State 0, Line 1
Cannot create the foreign key 'fk_htk_id_sanpham' with the SET NULL referential action, because one or more referencing columns are not nullable.
Msg 1750, Level 16, State 0, Line 1
Could
thể tạo constraint hoặc chỉ mục. Xem lỗi trước.
सुनिश्चित करें कि आप नीचे दिखाए गए अनुसार NULL मान प्राप्त करने के लिए हैंगटनखो तालिका में id_sanpham कॉलम को परिभाषित करते हैं।
CREATE TABLE hangtonkho
( id_hangtonkho INT PRIMARY KEY,
id_sanpham INT,
soluong INT,
luong_toithieu INT,
luong_toida INT,
CONSTRAINT fk_htk_id_sanpham
FOREIGN KEY (id_sanpham)
REFERENCES sanpham (id_sanpham)
ON DELETE SET NULL
);
Comma
nd (s) completed successfully.
बाधा के साथ एक विदेशी कुंजी बनाना ALTER TABLE स्टेटमेंट के साथ हटाते समय NULL मान सेट करता है
सिंटैक्स
ALTER TABLE state_con
ADD CONSTRAINT fk_ten
FOREIGN KEY (cot_con1, cot_con2, . cot_con_n)
REFERENCES bang_me (cot_me1, cot_me2, . cot_me_n)
ON DELETE SET NULL;
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.
ON DELETE SET NULL
निर्दिष्ट करता है कि जब पैरेंट तालिका में डेटा हटा दिया जाता है तो चाइल्ड डेटा NULL मान पर सेट हो जाएगा। चाइल्ड टेबल में डेटा हटाया नहीं जाएगा।
उदाहरण के लिए
ALTER TABLE hangtonkho
ADD CONSTRAINT fk_htk_id_sanpham
FOREIGN KEY (id_sanpham)
REFERENCES sanpham (id_sanpham)
ON DELETE
SET NULL;
इस उदाहरण में, hangtonkho उप तालिका fk_htk_id_sanpham नाम की एक विदेशी कुंजी के साथ बनाई गई है, जो id_sanpham पर आधारित मूल तालिका sanpham को संदर्भित करती है।
SQL सर्वर के लिए ON DELETE SET NULL निर्दिष्ट करना ताकि यह समझा जा सके कि जब पैरेंट टेबल में id_sanpham डेटा हटा दिया जाता है, तो hangtonkho उप तालिका में संबंधित रिकॉर्ड NULL मान पर सेट हो जाएगा।पी>