SQL सर्वर में, आप सभी विदेशी कुंजियों की सूची वापस करने के लिए Transact-SQL का उपयोग कर सकते हैं और CHECK
वर्तमान डेटाबेस के लिए बाधाएं।
इस जानकारी को पुनः प्राप्त करने के लिए इस पृष्ठ के उदाहरण दो सिस्टम दृश्यों को क्वेरी करते हैं:
sys.foreign_keys
और
sys.check_constraints
. आप प्रत्येक को अलग-अलग क्वेरी कर सकते हैं, या UNION
. का उपयोग कर सकते हैं उन सभी को एक ही परिणाम सेट में प्रदर्शित करने के लिए।
उदाहरण 1 - संयुक्त परिणाम सेट
इस उदाहरण में, मैं UNION
. का उपयोग करता हूं विदेशी कुंजी वापस करने के लिए और CHECK
एक ही परिणाम सेट में बाधाएं।
चयन OBJECT_NAME(parent_object_id) AS 'टेबल', नाम AS 'बाधा', type_desc, is_disabled, is_not_trustedFROM sys.foreign_keysUNIONSELECT OBJECT_NAME(parent_object_id), नाम, type_desc, is_disabled, ispre_not_trusted, ispre_not_trusted;परिणाम:
+---------------------+-------------------------- -----+--------------------------+----------+--- ---------------+| टेबल | बाधा | type_desc | is_disabled | is_not_trusted ||----------------------------+---------------------------- ----+--------------------------+----------+--- --------------|| बैंडमेम्बर | FK_BandMember_Band | FOREIGN_KEY_CONSTRAINT | 0 | 0 || बैंडमेम्बर | FK_BandMember_Musician | FOREIGN_KEY_CONSTRAINT | 0 | 0 || शहर | FK_City_Country | FOREIGN_KEY_CONSTRAINT | 0 | 0 || सदस्यता अवधि | chkValidEndDate | CHECK_CONSTRAINT | 0 | 0 || सदस्यता अवधि | FK_MembershipPeriod_BandMember | FOREIGN_KEY_CONSTRAINT | 0 | 0 |+---------------------+---------------------------- ----+--------------------------+----------+--- --------------+इस स्थिति में, वर्तमान डेटाबेस में चार विदेशी कुंजियाँ और एक
CHECK
. है बाधाहम यह भी देख सकते हैं कि प्रत्येक बाधा सक्षम है या अक्षम है, साथ ही यह भी देख सकते हैं कि यह विश्वसनीय है या नहीं।
उदाहरण 2 - सभी कॉलम लौटाएं
ये दो दृश्य इस उदाहरण में मेरे द्वारा सूचीबद्ध किए गए कॉलम की तुलना में अधिक कॉलम लौटाते हैं। आप सभी कॉलम वापस करने के लिए हमेशा वाइल्डकार्ड का उपयोग कर सकते हैं। हालांकि, अगर आप ऐसा करते हैं, तो आप
UNION
. का उपयोग नहीं कर पाएंगे , क्योंकि प्रत्येक दृश्य कॉलम की एक अलग संख्या देता है।इसलिए, आपको उन्हें अलग से पूछना होगा। उदाहरण के लिए:
चुनें * sys.foreign_keys से;चुनें * sys.check_constraints से;यह दो परिणाम सेट का उत्पादन करेगा:एक में विदेशी कुंजी है, दूसरे में
CHECK
. है बाधाएं।स्थान बचाने के लिए, मैं उस क्वेरी के परिणाम प्रदर्शित नहीं करूंगा। लेकिन यहाँ दूसरी पंक्ति क्या उत्पन्न करती है (क्षैतिज रूप से स्क्रॉल करने से आपको बचाने के लिए लंबवत आउटपुट का उपयोग करके):
चुनें * sys.check_constraints से;परिणाम (ऊर्ध्वाधर आउटपुट का उपयोग करके):
-[रिकॉर्ड 1]--------------------------नाम | chkValidEndDateobject_id | 1525580473 प्रिंसिपल_आईडी | NULLschema_id | 1parent_object_id | 1349579846टाइप | सी type_desc | CHECK_CONSTRAINTक्रिएट_डेट | 2019-09-11 00:33:02.587modify_date | 2019-09-11 00:33:02.587is_ms_shipped | 0is_published | 0is_schema_published | 0is_disabled | 0is_not_for_replication | 0is_not_trusted | 0parent_column_id | 0 परिभाषा | ([समाप्ति तिथि]>=[प्रारंभ तिथि])_database_collation का उपयोग करता है | 1is_system_named | 0आप अपनी क्वेरी में इनमें से कोई भी कॉलम शामिल कर सकते हैं, लेकिन अगर आप इसे विदेशी कुंजियों के साथ जोड़ते हैं, तो दोनों दृश्यों में समान कॉलम शामिल करना सुनिश्चित करें।
sys.foreign_keys
दृश्य कुछ और कॉलम देता है। यहां एक संशोधित क्वेरी है, जहां मैं उस दृश्य से पहली पंक्ति (नाम से) लौटाता हूं।शीर्ष चुनें(1) * sys.foreign_keysORDER से नाम से;परिणाम (ऊर्ध्वाधर आउटपुट का उपयोग करके):
-[रिकॉर्ड 1]--------------------------नाम | FK_BandMember_Bandobject_id | 1317579732 प्रिंसिपल_आईडी | NULLschema_id | 1parent_object_id | 1285579618प्रकार | एफ type_desc | FOREIGN_KEY_CONSTRAINTक्रिएट_डेट | 2019-08-17 15:58:42.027modify_date | 2019-08-17 15:58:42.027is_ms_shipped | 0is_published | 0is_schema_published | 0referenced_object_id | 1253579504key_index_id | 1is_disabled | 0is_not_for_replication | 0is_not_trusted | 0delete_referential_action | 0delete_referential_action_desc | NO_ACTIONupdate_referential_action | 0update_referential_action_desc | NO_ACTIONis_system_named | 0