Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> SQL Server

SQL सर्वर में सेट नल के साथ विदेशी कुंजी

निम्न ट्यूटोरियल SQL सर्वर में सेट नल ऑन डिलीट बाधा के साथ विदेशी कुंजी विदेशी कुंजी की व्याख्या करेगा।

SQL सर्वर में सेट न्यूल ऑन डिलीट के साथ विदेशी कुंजी क्या है?

विदेशी कुंजियाँ डिलीट पर नल सेट करने के लिए बाध्य हैं, जिसका अर्थ है कि जब पैरेंट टेबल में कोई रिकॉर्ड हटा दिया जाता है, तो विदेशी कुंजी मान फ़ील्ड में चाइल्ड टेबल में संबंधित रिकॉर्ड सेट किया जाएगा शून्य करने के लिए। चाइल्ड टेबल में लिखी गई टेबल को SQL सर्वर से डिलीट नहीं किया जाएगा।

विदेशी कुंजियाँ बशर्ते कि हटाए जाने पर NULL मान CREATE TABLE या ALTER TABLE स्टेटमेंट के साथ बनाया जा सकता है।

CREATE TABLE स्टेटमेंट के साथ हटाए जाने पर NULL मान सेट करने के लिए बाधा के साथ विदेशी कुंजी बनाएं

सिंटैक्स

  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 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 TA BLE 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 TABL E 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 h angtonkho 
( 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 T ABLE 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 मान पर सेट हो जाएगा।

  1. प्रबंधन स्टूडियो के साथ एमएस एसक्यूएल सर्वर प्रबंधित करें

    SQL सर्वर प्रबंधन स्टूडियो SQL सर्वर में एक उपकरण है यदि आप इंस्टॉल करते समय चुनते हैं। यह टूल कमांड लाइन का उपयोग करने के बजाय ग्राफिकल इंटरफ़ेस पर SQL सर्वर को कनेक्ट और प्रबंधित करने में मदद करता है। एक दूरस्थ SQL सर्वर स्थापना से कनेक्ट करने के लिए, आपको इस सॉफ़्टवेयर या अन्य समान सॉफ़्टवेयर की

  1. एमएस एसक्यूएल सर्वर क्या है?

    एसक्यूएल सर्वर क्या है? आरडीबीएमएस पर आधारित माइक्रोसॉफ्ट द्वारा विकसित सॉफ्टवेयर। एक ORDBMS (ऑब्जेक्ट रिलेशनल डेटाबेस मैनेजमेंट सिस्टम) भी है। एक स्वतंत्र मंच। सॉफ्टवेयर कमांड लाइन इंटरफेस और जीयूआई इंटरफेस दोनों का उपयोग करता है। SQL भाषा समर्थन (पूर्व में SEQUEL - संरचित अंग्रेजी क्वेरी भाषा) -

  1. Microsoft SQL सर्वर में डेटाबेस के साथ बुनियादी संचालन

    सभी को नमस्कार, पिछली पोस्ट में, मैंने एसएसएमएस (एसक्यूएल सर्वर मैनेजमेंट स्टूडियो) के माध्यम से आपके साथ एसक्यूएल सर्वर से कनेक्शन स्थापित और स्थापित किया है। इस अगले लेख में, मैं SQL सर्वर प्रबंधन स्टूडियो इंटरफ़ेस टूल के माध्यम से SQL सर्वर में डेटाबेस के साथ सबसे बुनियादी संचालन के बारे में अधि