विदेशी कुंजी बाधा को 0 पर सेट करना एक अच्छा विचार नहीं है, क्योंकि यदि आप करते हैं, तो आपका डेटाबेस यह सुनिश्चित नहीं करेगा कि यह संदर्भात्मक अखंडता का उल्लंघन नहीं कर रहा है। इससे गलत, भ्रामक या अधूरा डेटा हो सकता है।
आप एक कारण के लिए एक विदेशी कुंजी बनाते हैं: क्योंकि चाइल्ड कॉलम में सभी मान पैरेंट कॉलम में मान के समान होंगे। यदि कोई विदेशी कुंजी बाधाएं नहीं हैं, तो चाइल्ड रो में एक मान हो सकता है जो मूल पंक्ति में नहीं है, जिससे गलत डेटा हो जाएगा।
उदाहरण के लिए, मान लें कि आपके पास लॉगिन करने के लिए छात्रों के लिए एक वेबसाइट है और प्रत्येक छात्र को एक उपयोगकर्ता के रूप में एक खाते के लिए पंजीकरण करना होगा। आपके पास उपयोगकर्ता आईडी के लिए एक तालिका है, जिसमें उपयोगकर्ता आईडी एक प्राथमिक कुंजी के रूप में है; और छात्र खाते के लिए एक और तालिका, छात्र आईडी के साथ एक कॉलम के रूप में चूंकि प्रत्येक छात्र के पास उपयोगकर्ता आईडी होनी चाहिए, इसलिए यह समझ में आएगा कि छात्र आईडी तालिका से छात्र आईडी बनाने के लिए एक विदेशी कुंजी है जो उपयोगकर्ता आईडी तालिका में प्राथमिक कुंजी उपयोगकर्ता आईडी का संदर्भ देती है। यदि कोई विदेशी कुंजी नहीं है, तो एक छात्र के पास एक छात्र आईडी और कोई उपयोगकर्ता आईडी नहीं हो सकती है, जिसका अर्थ है कि एक छात्र उपयोगकर्ता होने के बिना खाता प्राप्त कर सकता है, जो गलत है।
कल्पना करें कि यह बड़ी मात्रा में डेटा के लिए होता है। इसलिए आपको विदेशी कुंजी जांच की आवश्यकता है।
यह पता लगाना सबसे अच्छा है कि त्रुटि का कारण क्या है। सबसे अधिक संभावना है, आप चाइल्ड रो से हटाए बिना मूल पंक्ति से हटाने का प्रयास कर रहे हैं। पैरेंट पंक्ति से हटाने से पहले चाइल्ड रो को हटाने का प्रयास करें।