SQL सर्वर डेटाबेस में सभी अविश्वसनीय विदेशी कुंजी बाधाओं की सूची वापस करने के लिए, आप नीचे T-SQL कोड चला सकते हैं।
एक अविश्वसनीय विदेशी कुंजी वह है जिसका is_not_trusted
. है फ्लैग सेट 1
।
उदाहरण 1 - केवल अविश्वसनीय विदेशी कुंजी प्रतिबंध लौटाएं
यह क्वेरी वर्तमान डेटाबेस में केवल अविश्वसनीय विदेशी कुंजी बाधाओं को लौटाती है। इस उदाहरण के लिए, मैं केवल बाधा का नाम, उसकी विश्वसनीय स्थिति, उसकी सक्षम/अक्षम स्थिति के साथ लौटाता हूं।
SELECT name AS 'Constraint', is_not_trusted, is_disabled FROM sys.foreign_keys WHERE is_not_trusted = 1;
परिणाम:
+------------------------+------------------+---------------+ | Constraint | is_not_trusted | is_disabled | |------------------------+------------------+---------------| | FK_BandMember_Band | 1 | 1 | | FK_BandMember_Musician | 1 | 0 | +------------------------+------------------+---------------+
यह sys.foreign_keys
. से पूछताछ करता है सिस्टम दृश्य। हम जानते हैं कि यह केवल अविश्वसनीय बाधाओं को लौटाता है क्योंकि WHERE
खंड केवल उन पंक्तियों को निर्दिष्ट करता है जिनमें is_not_trusted
. है कॉलम 1
. पर सेट है ।
अगर आप केवल विश्वसनीय लौटना चाहते हैं विदेशी कुंजी बाधाएं, बस 1
बदलें करने के लिए 0
।
मैंने is_disabled
. भी शामिल किया है ध्वज, क्योंकि यह हमें दिखाता है कि बाधा वर्तमान में सक्षम है या नहीं। हम देख सकते हैं कि एक बाधा सक्षम है और दूसरी नहीं है।
यह इस तथ्य को प्रदर्शित करता है कि एक बाधा सक्षम होने पर भी उस पर भरोसा नहीं किया जा सकता है। ऐसा इसलिए है, क्योंकि जब आप किसी बाधा को सक्षम (या बनाते हैं) करते हैं, तो आपके पास इसे सक्षम करने से पहले किसी भी मौजूदा डेटा की जांच करने का विकल्प होता है। यदि आप मौजूदा डेटा की जांच नहीं करना चुनते हैं, तो इसके सक्षम होने के बाद बाधा पर भरोसा नहीं किया जाएगा।
यहाँ फिर से वही प्रश्न है, लेकिन इस बार मैं प्रत्येक बाधा के लिए तालिका और संदर्भित तालिका शामिल करता हूँ:
SELECT name AS 'Constraint', OBJECT_NAME(parent_object_id) AS 'Table', OBJECT_NAME(referenced_object_id) AS 'Referenced Table', is_disabled, is_not_trusted FROM sys.foreign_keys WHERE is_not_trusted = 1;
परिणाम:
+------------------------+------------+--------------------+---------------+------------------+ | Constraint | Table | Referenced Table | is_disabled | is_not_trusted | |------------------------+------------+--------------------+---------------+------------------| | FK_BandMember_Band | BandMember | Band | 1 | 1 | | FK_BandMember_Musician | BandMember | Musician | 0 | 1 | +------------------------+------------+--------------------+---------------+------------------+
उदाहरण 2 - सभी विदेशी कुंजी प्रतिबंध लौटाएं
निम्न क्वेरी सभी लौटाती है वर्तमान डेटाबेस के लिए विदेशी कुंजी बाधाएं (केवल अविश्वसनीय नहीं):
SELECT name AS 'Constraint', is_not_trusted, is_disabled FROM sys.foreign_keys;
परिणाम:
+--------------------------------+------------------+---------------+ | Constraint | is_not_trusted | is_disabled | |--------------------------------+------------------+---------------| | FK_BandMember_Band | 1 | 1 | | FK_BandMember_Musician | 1 | 0 | | FK_MembershipPeriod_BandMember | 0 | 0 | +--------------------------------+------------------+---------------+