मेरे पास primary key
और एक foreign key
के साथ तालिका same table primary key
का संदर्भ है। यानी एक ही टेबल में माता-पिता और बच्चे हैं। एसक्यूएल सेवर में डिलीट नियम के लिए तीन विकल्प हैं। लेकिन "NO ACTION"
नियम को हटाने के लिए केवल संभव है। मैं समझता हूं कि चक्र और चेनिंग के कारण "cascade" delete
सेट करना संभव नहीं है। लेकिन अन्य विकल्पों की अनुमति क्यों नहीं है? विशेष रूप से "SET NULL"
एक।स्वयं संदर्भ संबंधों पर हटाए गए सेट पर
अभी मुझे इसे मैन्युअल रूप से करना है। मुझे बाल रिकॉर्ड ढूंढना है और विदेशी कुंजी को शून्य पर सेट करना है। उसके बाद मैं माता-पिता को हटा सकता हूं। इसके लिए नियम निर्धारित करना क्यों संभव नहीं है?
आपके मामले में मुझे लगता है कि ** हटाएं ट्रिगर ** जो आप चाहते हैं उसे करें। इसे देखें [ट्रिगर बनाएं] (https://msdn.microsoft.com/en-us/library/ms189799.aspx) –
मैं ट्रिगर बनाने से बचना चाहता हूं लेकिन यह दिन के अंत में एकमात्र समाधान हो सकता है। मैं जानना चाहता था कि एसक्यूएल सर्वर को मजबूर करने के लिए कुछ डीडीएल वर्कअराउंड है या नहीं, "पूरी तरह से सेट करें"। और यदि यह संभव नहीं है, तो क्यों? क्योंकि मैं "ओवरलेट सेट नल" को अक्षम करने के कारणों को नहीं देख सकता क्योंकि "ओवरलेटेड कैस्केड" अक्षम करने के लिए समान है। कोई चक्र नहीं हैं और न ही एकाधिक कैस्केड पथ हैं। मैं बस यह सुनिश्चित करना चाहता हूं कि एमएस विशलिस्ट में पोस्ट करने से पहले कोई तार्किक कारण नहीं है। – mattti
@ मत्ती मुझे यह मिला [हटाए गए सेट पर नल] (http://www.sqlteam.com/article/using-set-null-and-set-default-with-foreign-key-constraints) –