आप जिन दो बाधाओं को लागू करना चाहते हैं, उनके बारे में कुछ बातें हैं:
-
नई सम्मिलित पंक्ति में पेरेंट_ग्रुप कॉलम के लिए NULL मान नहीं हो सकता।
- आप किसी कॉलम पर नॉट नल बाधा तभी लागू कर सकते हैं जब उसमें सभी गैर-शून्य मान हों। रूट नोड के लिए आपको इस कॉलम में एक शून्य मान की आवश्यकता है।
- इसके लिए आप CHECK बाधा का उपयोग कर सकते हैं। चेक बाधा के बारे में अधिक पढ़ें यहां ।
- आप डाल सकते हैं
यह केवल रूट नोड के लिए NULL मान की अनुमति देगा और तालिका में हर दूसरी पंक्ति के लिए NOT NULL मान लागू करेगा।
-
एक बाधा जोड़ें ताकि रूट समूह पंक्ति को हटाया नहीं जा सके।
- कि आप पहले ही
parent_group
. के बीच एक विदेशी कुंजी परिभाषित कर चुके हैं औरpkey
, डेटाबेस स्वचालित रूप से संदर्भात्मक अखंडता को लागू करेगा और रूट नोड (या उस मामले के लिए किसी भी मूल नोड) को हटाए जाने से मना करेगा। यदि किसी पैरेंट या रूट नोड पर DELETE का प्रयास किया जाता है तो डेटाबेस एक त्रुटि लौटाएगा।
- कि आप पहले ही
-
संपादित करें . में उल्लिखित बिंदु के लिए अनुभाग, आप टेबल पर एक साधारण चेक बाधा डाल सकते हैं जैसे
CHECK (parent_group != pkey)
. यह आपके लिए काम करना चाहिए।
विदेशी प्रमुख बाधाओं को परिभाषित करने के तरीके और संदर्भात्मक अखंडता को लागू करने के लिए उनका उपयोग करने के तरीके के बारे में पढ़ें। साथ ही, मेरे द्वारा ऊपर पोस्ट किए गए लिंक या यहां इन सुझावों को लागू करने से पहले।