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

SQL सर्वर में सभी अविश्वसनीय विदेशी कुंजी बाधाओं को कैसे वापस करें (T-SQL उदाहरण)

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             |
+--------------------------------+------------------+---------------+

  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 सर्वर:info_schema से विदेशी कुंजी संदर्भ कैसे प्राप्त करें?

  2. SQL सर्वर में निहित लेनदेन कैसे काम करते हैं

  3. SQL सर्वर में CASE एक्सप्रेशन का उपयोग करना

  4. SQL सर्वर (T-SQL) में एक डेटाबेस मेल प्रोफ़ाइल बनाएँ

  5. SQL सर्वर में EXISTS लॉजिकल ऑपरेटर का उपयोग कैसे करें - SQL सर्वर / TSQL ट्यूटोरियल पार्ट 125