Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

चाइल्ड टेबल में विदेशी कुंजी बाधा उन मानों को सम्मिलित करने की अनुमति देती है जो मूल तालिका में मौजूद नहीं हैं

सबसे पहले, हमारे पास व्यावहारिक . है कारण अनुक्रमणिका का उपयोग करके विदेशी कुंजियों को बनाए रखा और जाँचा जाता है। किसी अनुक्रमणिका को प्रयोग करने योग्य बनाने के लिए, हमें अनुक्रमणिका के भीतर सभी स्तंभों के (मांग किए गए) मानों को जानना होगा। अगर हमारे पास (a,b) . पर एक इंडेक्स/पीके है और हमारे पास (NULL,1) . का एक विदेशी कुंजी मान है , हम खोज . नहीं कर सकते सूचकांक के भीतर यह निर्धारित करने के लिए कि क्या b . के साथ कोई पंक्ति है 1 का मान। यह विदेशी कुंजी को बनाए रखने के लिए "महंगा" बना देगा।

लेकिन दूसरी बात, हमें निरंतरता पर विचार करने की जरूरत है। सिंगल कॉलम केस के लिए, यह काफी विवादास्पद है - यदि आपके पास एफके कॉलम में कोई मान है, तो संदर्भित कॉलम में मिलान करने वाला मान होना चाहिए। अन्यथा, यदि FK कॉलम NULL है तब बाधा की जाँच नहीं की जाती है।

लेकिन, हम इसे कई कॉलम तक कैसे बढ़ा सकते हैं? क्या है ऊपर का नियम? कोई एकल नहीं है स्पष्ट व्याख्या, लेकिन इसके बजाय कई। क्या उपरोक्त नियम "यदि सभी . है कॉलम गैर-शून्य हैं, तो बाधा की जाँच की जाती है" या "यदि कोई कॉलम गैर-शून्य हैं, तो बाधा की जाँच की जाती है"? ये नियम समान होते हैं जब केवल एक कॉलम विचाराधीन होता है।

आपने अपेक्षा की थी कि नियम दूसरा होगा, जबकि वास्तव में यह पहला है। यह स्पष्ट रूप से दस्तावेज है :



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. जांचें कि SQL में किसी अन्य कॉलम में कॉलम मान मौजूद है या नहीं

  2. SQL सर्वर 2005 ड्रॉप कॉलम बाधाओं के साथ

  3. मैं संग्रहीत कार्यविधि से डेटाटेबल में तालिका कैसे प्राप्त कर सकता हूं?

  4. SQL सर्वर में किसी दिए गए कैरेक्टर के लिए यूनिकोड मान कैसे लौटाएं - UNICODE ()

  5. SQL सर्वर स्क्रिप्ट निष्पादित करें