यह आलेख SQL सर्वर में विदेशी कुंजी जानकारी प्राप्त करने के लिए ग्यारह विभिन्न दृष्टिकोण प्रस्तुत करता है। इनमें से कुछ स्थिति के आधार पर दूसरों की तुलना में अधिक उपयोगी होंगे।
अधिक जानकारी वापस करने के लिए इनमें से कुछ विधियों को संशोधित किया जा सकता है। उदाहरण के लिए, आप अधिक डेटा वापस करने के लिए विभिन्न सिस्टम दृश्यों पर जॉइन कर सकते हैं।
उदाहरण 1 - sp_fkeys सिस्टम संग्रहित प्रक्रिया
sp_fkeys
सिस्टम संग्रहीत कार्यविधि वर्तमान परिवेश के लिए तार्किक विदेशी कुंजी जानकारी लौटाती है। यह अक्षम विदेशी कुंजियों सहित विदेशी कुंजी संबंध दिखाता है।
यह संग्रहीत प्रक्रिया आदर्श है जब आपको किसी विशिष्ट तालिका के लिए विदेशी कुंजी जानकारी की आवश्यकता होती है। आप बस प्रक्रिया के लिए प्राथमिक या विदेशी कुंजी तालिका नाम पास करते हैं, और यह प्रासंगिक जानकारी वापस कर देगा।
उदाहरण:
EXEC sp_fkeys @fktable_name = Albums;
परिणाम (ऊर्ध्वाधर आउटपुट का उपयोग करके):
-[ RECORD 1 ]------------------------- PKTABLE_QUALIFIER | Music PKTABLE_OWNER | dbo PKTABLE_NAME | Artists PKCOLUMN_NAME | ArtistId FKTABLE_QUALIFIER | Music FKTABLE_OWNER | dbo FKTABLE_NAME | Albums FKCOLUMN_NAME | ArtistId KEY_SEQ | 1 UPDATE_RULE | 1 DELETE_RULE | 1 FK_NAME | FK_Albums_Artists PK_NAME | PK__Artists__25706B50FCD918B1 DEFERRABILITY | 7 -[ RECORD 2 ]------------------------- PKTABLE_QUALIFIER | Music PKTABLE_OWNER | dbo PKTABLE_NAME | Genres PKCOLUMN_NAME | GenreId FKTABLE_QUALIFIER | Music FKTABLE_OWNER | dbo FKTABLE_NAME | Albums FKCOLUMN_NAME | GenreId KEY_SEQ | 1 UPDATE_RULE | 1 DELETE_RULE | 1 FK_NAME | FK_Albums_Genres PK_NAME | PK__Genres__0385057E88BB96F8 DEFERRABILITY | 7
इस दृश्य का उपयोग करने का दूसरा तरीका प्राथमिक कुंजी तालिका नाम प्रदान करना है:
EXEC sp_fkeys @pktable_name = Artists;
परिणाम (ऊर्ध्वाधर आउटपुट का उपयोग करके):
-[ RECORD 1 ]------------------------- PKTABLE_QUALIFIER | Music PKTABLE_OWNER | dbo PKTABLE_NAME | Artists PKCOLUMN_NAME | ArtistId FKTABLE_QUALIFIER | Music FKTABLE_OWNER | dbo FKTABLE_NAME | Albums FKCOLUMN_NAME | ArtistId KEY_SEQ | 1 UPDATE_RULE | 1 DELETE_RULE | 1 FK_NAME | FK_Albums_Artists PK_NAME | PK__Artists__25706B50FCD918B1 DEFERRABILITY | 7
आप अन्य तर्कों का भी उपयोग कर सकते हैं, जैसे टेबल स्वामी और टेबल क्वालीफायर:
EXEC sp_fkeys @pktable_name = Artists, @pktable_owner = dbo, @pktable_qualifier = Music, @fktable_name = Albums, @fktable_owner = dbo, @fktable_qualifier = Music;
उदाहरण 2 - REFERENTIAL_CONSTRAINTS सिस्टम दृश्य
INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS
सिस्टम व्यू प्रत्येक FOREIGN KEY
के लिए एक पंक्ति लौटाता है वर्तमान डेटाबेस में बाधा।
यह डेटाबेस में विदेशी चाबियों की सूची को उनके संबंधित अद्वितीय बाधा के साथ जल्दी से वापस करने के लिए आदर्श है। आप पिछले उदाहरण की तरह केवल एक तालिका तक सीमित नहीं हैं।
यहां एक उदाहरण दिया गया है:
SELECT CONSTRAINT_NAME, UNIQUE_CONSTRAINT_NAME FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS;
परिणाम:
+-------------------+-------------------------------+ | CONSTRAINT_NAME | UNIQUE_CONSTRAINT_NAME | |-------------------+-------------------------------| | FK_Albums_Artists | PK__Artists__25706B50FCD918B1 | | FK_Albums_Genres | PK__Genres__0385057E88BB96F8 | +-------------------+-------------------------------+
तो इस मामले में हम वर्तमान डेटाबेस में प्रत्येक विदेशी कुंजी को उसकी संबद्ध प्राथमिक कुंजी के साथ देख सकते हैं।
जैसा कि यह पता चला है, इस डेटाबेस में केवल दो विदेशी कुंजियाँ हैं और वे वही हैं जो हमने पिछले उदाहरण में देखी थीं।
यहां एक उदाहरण दिया गया है जो FK_Albums_Artists के लिए सभी डेटा लौटाता है विदेशी कुंजी:
SELECT * FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS WHERE CONSTRAINT_NAME = 'FK_Albums_Artists';
परिणाम:
CONSTRAINT_CATALOG | Music CONSTRAINT_SCHEMA | dbo CONSTRAINT_NAME | FK_Albums_Artists UNIQUE_CONSTRAINT_CATALOG | Music UNIQUE_CONSTRAINT_SCHEMA | dbo UNIQUE_CONSTRAINT_NAME | PK__Artists__25706B50FCD918B1 MATCH_OPTION | SIMPLE UPDATE_RULE | NO ACTION DELETE_RULE | NO ACTION
आप देखेंगे कि यह विधि प्राथमिक और विदेशी कुंजी तालिका विवरण प्रदान नहीं करती है जो आपको पिछली विधि से मिलती है, इसलिए यदि आपको उस जानकारी की आवश्यकता है तो आपको अन्य विचारों के साथ कुछ जुड़ने की आवश्यकता होगी (या विधियों में से एक का उपयोग करें) नीचे)।
उदाहरण 3 - KEY_COLUMN_USAGE सिस्टम दृश्य
INFORMATION_SCHEMA.KEY_COLUMN_USAGE
सिस्टम व्यू प्रत्येक कॉलम के लिए एक पंक्ति देता है जो वर्तमान डेटाबेस में एक कुंजी के रूप में विवश है।
SELECT TABLE_NAME, COLUMN_NAME, CONSTRAINT_NAME FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE;
परिणाम:
+--------------+---------------+-------------------------------+ | TABLE_NAME | COLUMN_NAME | CONSTRAINT_NAME | |--------------+---------------+-------------------------------| | Albums | ArtistId | FK_Albums_Artists | | Albums | GenreId | FK_Albums_Genres | | Albums | AlbumId | PK__Albums__97B4BE379FC780BD | | Artists | ArtistId | PK__Artists__25706B50FCD918B1 | | Genres | GenreId | PK__Genres__0385057E88BB96F8 | +--------------+---------------+-------------------------------+
हम देख सकते हैं कि यह प्राथमिक कुंजी सहित सभी बाधाओं को लौटाता है।
हम एक WHERE
. भी जोड़ सकते हैं परिणामों को एक विशिष्ट तालिका में सीमित करने के लिए खंड।
SELECT TABLE_NAME, COLUMN_NAME, CONSTRAINT_NAME FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE TABLE_NAME = 'Albums';
परिणाम:
+--------------+---------------+------------------------------+ | TABLE_NAME | COLUMN_NAME | CONSTRAINT_NAME | |--------------+---------------+------------------------------| | Albums | ArtistId | FK_Albums_Artists | | Albums | GenreId | FK_Albums_Genres | | Albums | AlbumId | PK__Albums__97B4BE379FC780BD | +--------------+---------------+------------------------------+
इन उदाहरणों में, मैंने परिणामों को उस दृश्य के केवल उन स्तंभों तक सीमित कर दिया है जिनमें मेरी रुचि है, लेकिन आप तारांकन (*
) का भी उपयोग कर सकते हैं ) वाइल्डकार्ड सभी कॉलम लौटाने के लिए।
SELECT * FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE TABLE_NAME = 'Albums';
परिणाम (ऊर्ध्वाधर आउटपुट का उपयोग करके):
-[ RECORD 1 ]------------------------- CONSTRAINT_CATALOG | Music CONSTRAINT_SCHEMA | dbo CONSTRAINT_NAME | FK_Albums_Artists TABLE_CATALOG | Music TABLE_SCHEMA | dbo TABLE_NAME | Albums COLUMN_NAME | ArtistId ORDINAL_POSITION | 1 -[ RECORD 2 ]------------------------- CONSTRAINT_CATALOG | Music CONSTRAINT_SCHEMA | dbo CONSTRAINT_NAME | FK_Albums_Genres TABLE_CATALOG | Music TABLE_SCHEMA | dbo TABLE_NAME | Albums COLUMN_NAME | GenreId ORDINAL_POSITION | 1 -[ RECORD 3 ]------------------------- CONSTRAINT_CATALOG | Music CONSTRAINT_SCHEMA | dbo CONSTRAINT_NAME | PK__Albums__97B4BE379FC780BD TABLE_CATALOG | Music TABLE_SCHEMA | dbo TABLE_NAME | Albums COLUMN_NAME | AlbumId ORDINAL_POSITION | 1
उदाहरण 4 - CONSTRAINT_COLUMN_USAGE सिस्टम दृश्य
यह पिछले उदाहरण के समान है। INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE
सिस्टम व्यू वर्तमान डेटाबेस में प्रत्येक कॉलम के लिए एक पंक्ति देता है जिसमें कॉलम पर परिभाषित बाधा है।
INFORMATION_SCHEMA.KEY_COLUMN_USAGE
. की तरह आपको इस दृश्य के साथ प्राथमिक कुंजियाँ भी मिलेंगी। हालांकि, INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE
केवल प्रमुख बाधाओं तक सीमित नहीं है।
SELECT TABLE_NAME, COLUMN_NAME, CONSTRAINT_NAME FROM INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE;
परिणाम:
+--------------+---------------+-------------------------------+ | TABLE_NAME | COLUMN_NAME | CONSTRAINT_NAME | |--------------+---------------+-------------------------------| | Albums | ArtistId | FK_Albums_Artists | | Albums | GenreId | FK_Albums_Genres | | Albums | AlbumId | PK__Albums__97B4BE379FC780BD | | Artists | ArtistId | PK__Artists__25706B50FCD918B1 | | Genres | GenreId | PK__Genres__0385057E88BB96F8 | +--------------+---------------+-------------------------------+
आप WHERE
. का उपयोग कर सकते हैं केवल एक विशिष्ट तालिका या कॉलम को वापस करने के लिए क्लॉज:
SELECT TABLE_NAME, COLUMN_NAME, CONSTRAINT_NAME FROM INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE WHERE COLUMN_NAME = 'ArtistId';
परिणाम:
+--------------+---------------+-------------------------------+ | TABLE_NAME | COLUMN_NAME | CONSTRAINT_NAME | |--------------+---------------+-------------------------------| | Albums | ArtistId | FK_Albums_Artists | | Artists | ArtistId | PK__Artists__25706B50FCD918B1 | +--------------+---------------+-------------------------------+
इस मामले में मैंने एक कॉलम नाम निर्दिष्ट किया है, इसलिए उसने उस नाम के कॉलम पर सभी बाधाओं को वापस कर दिया। जैसा कि यह पता चला है, डेटाबेस दो अलग-अलग तालिकाओं में एक ही कॉलम नाम का उपयोग करता है। एक में विदेशी कुंजी बाधा है, दूसरी प्राथमिक कुंजी है। इसलिए दोनों पंक्तियों को वापस कर दिया जाता है।
फिर से, आप तारक का उपयोग कर सकते हैं (*
) वाइल्डकार्ड सभी कॉलम लौटाने के लिए।
यहां एक उदाहरण दिया गया है जहां मैं एक विशिष्ट तालिका के लिए सभी डेटा लौटाता हूं:
SELECT * FROM INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE WHERE TABLE_NAME = 'Albums';
परिणाम (ऊर्ध्वाधर आउटपुट का उपयोग करके):
-[ RECORD 1 ]------------------------- TABLE_CATALOG | Music TABLE_SCHEMA | dbo TABLE_NAME | Albums COLUMN_NAME | ArtistId CONSTRAINT_CATALOG | Music CONSTRAINT_SCHEMA | dbo CONSTRAINT_NAME | FK_Albums_Artists -[ RECORD 2 ]------------------------- TABLE_CATALOG | Music TABLE_SCHEMA | dbo TABLE_NAME | Albums COLUMN_NAME | GenreId CONSTRAINT_CATALOG | Music CONSTRAINT_SCHEMA | dbo CONSTRAINT_NAME | FK_Albums_Genres -[ RECORD 3 ]------------------------- TABLE_CATALOG | Music TABLE_SCHEMA | dbo TABLE_NAME | Albums COLUMN_NAME | AlbumId CONSTRAINT_CATALOG | Music CONSTRAINT_SCHEMA | dbo CONSTRAINT_NAME | PK__Albums__97B4BE379FC780BD
उदाहरण 5 - CONSTRAINT_TABLE_USAGE सिस्टम दृश्य
INFORMATION_SCHEMA.CONSTRAINT_TABLE_USAGE
सिस्टम व्यू वर्तमान डेटाबेस में प्रत्येक तालिका के लिए एक पंक्ति देता है जिसमें तालिका पर परिभाषित एक बाधा है।
SELECT TABLE_NAME, CONSTRAINT_NAME FROM INFORMATION_SCHEMA.CONSTRAINT_TABLE_USAGE;
परिणाम:
+--------------+-------------------------------+ | TABLE_NAME | CONSTRAINT_NAME | |--------------+-------------------------------| | Artists | PK__Artists__25706B50FCD918B1 | | Genres | PK__Genres__0385057E88BB96F8 | | Albums | PK__Albums__97B4BE379FC780BD | | Albums | FK_Albums_Artists | | Albums | FK_Albums_Genres | +--------------+-------------------------------+
यह दृश्य उस स्तंभ नाम को वापस नहीं करता है जिस पर बाधाओं का उपयोग किया जाता है, इसलिए यह आपकी आवश्यकताओं के आधार पर आपके लिए उतना उपयोगी नहीं हो सकता है।
यहां एक उदाहरण दिया गया है जो एल्बम . के लिए इस दृश्य द्वारा लौटाए गए सभी डेटा को दिखाता है तालिका:
SELECT * FROM INFORMATION_SCHEMA.CONSTRAINT_TABLE_USAGE WHERE TABLE_NAME = 'Albums';
परिणाम:
-[ RECORD 1 ]------------------------- TABLE_CATALOG | Music TABLE_SCHEMA | dbo TABLE_NAME | Albums CONSTRAINT_CATALOG | Music CONSTRAINT_SCHEMA | dbo CONSTRAINT_NAME | PK__Albums__97B4BE379FC780BD -[ RECORD 2 ]------------------------- TABLE_CATALOG | Music TABLE_SCHEMA | dbo TABLE_NAME | Albums CONSTRAINT_CATALOG | Music CONSTRAINT_SCHEMA | dbo CONSTRAINT_NAME | FK_Albums_Artists -[ RECORD 3 ]------------------------- TABLE_CATALOG | Music TABLE_SCHEMA | dbo TABLE_NAME | Albums CONSTRAINT_CATALOG | Music CONSTRAINT_SCHEMA | dbo CONSTRAINT_NAME | FK_Albums_Genres
उदाहरण 6 - TABLE_CONSTRAINTS सिस्टम व्यू
INFORMATION_SCHEMA.TABLE_CONSTRAINTS
सिस्टम दृश्य वर्तमान डेटाबेस में प्रत्येक तालिका बाधा के लिए एक पंक्ति देता है।
SELECT TABLE_NAME, CONSTRAINT_NAME, CONSTRAINT_TYPE FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS;
परिणाम:
+--------------+-------------------------------+-------------------+ | TABLE_NAME | CONSTRAINT_NAME | CONSTRAINT_TYPE | |--------------+-------------------------------+-------------------| | Artists | PK__Artists__25706B50FCD918B1 | PRIMARY KEY | | Genres | PK__Genres__0385057E88BB96F8 | PRIMARY KEY | | Albums | PK__Albums__97B4BE379FC780BD | PRIMARY KEY | | Albums | FK_Albums_Artists | FOREIGN KEY | | Albums | FK_Albums_Genres | FOREIGN KEY | +--------------+-------------------------------+-------------------+
यह दृश्य स्तंभ नाम प्रदान नहीं करता है, लेकिन यह बाधा प्रकार प्रदान करता है। इसलिए, आप परिणामों को केवल विदेशी कुंजियों तक सीमित कर सकते हैं:
SELECT TABLE_NAME, CONSTRAINT_NAME, CONSTRAINT_TYPE FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE CONSTRAINT_TYPE = 'FOREIGN KEY';
परिणाम:
+--------------+-------------------+-------------------+ | TABLE_NAME | CONSTRAINT_NAME | CONSTRAINT_TYPE | |--------------+-------------------+-------------------| | Albums | FK_Albums_Artists | FOREIGN KEY | | Albums | FK_Albums_Genres | FOREIGN KEY | +--------------+-------------------+-------------------+
यहां एक उदाहरण दिया गया है जो वाइल्डकार्ड का उपयोग करता है (*
) वर्ण
एल्बम
. पर लागू विदेशी कुंजी बाधाओं के लिए सभी डेटा वापस करने के लिए तालिका:
SELECT * FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE TABLE_NAME = 'Albums' AND CONSTRAINT_TYPE = 'FOREIGN KEY';
परिणाम:
-[ RECORD 1 ]------------------------- CONSTRAINT_CATALOG | Music CONSTRAINT_SCHEMA | dbo CONSTRAINT_NAME | FK_Albums_Artists TABLE_CATALOG | Music TABLE_SCHEMA | dbo TABLE_NAME | Albums CONSTRAINT_TYPE | FOREIGN KEY IS_DEFERRABLE | NO INITIALLY_DEFERRED | NO -[ RECORD 2 ]------------------------- CONSTRAINT_CATALOG | Music CONSTRAINT_SCHEMA | dbo CONSTRAINT_NAME | FK_Albums_Genres TABLE_CATALOG | Music TABLE_SCHEMA | dbo TABLE_NAME | Albums CONSTRAINT_TYPE | FOREIGN KEY IS_DEFERRABLE | NO INITIALLY_DEFERRED | NO
उदाहरण 7 - sys.foreign_keys सिस्टम व्यू
sys.foreign_keys
सिस्टम व्यू में प्रति ऑब्जेक्ट एक पंक्ति होती है जो एक FOREIGN KEY
है बाधा, sys.object.type = F
. के साथ ("F" "विदेशी कुंजी" के लिए है)।
उदाहरण:
SELECT name AS 'Constraint', OBJECT_NAME(parent_object_id) AS 'Table', OBJECT_NAME(referenced_object_id) AS 'Referenced Column' FROM sys.foreign_keys;
परिणाम:
+-------------------+---------+---------------------+ | Constraint | Table | Referenced Column | |-------------------+---------+---------------------| | FK_Albums_Artists | Albums | Artists | | FK_Albums_Genres | Albums | Genres | +-------------------+---------+---------------------+
यह तब होता है जब FK_Albums_Artists
. के लिए सभी डेटा लौटाते हैं विदेशी कुंजी:
SELECT * FROM sys.foreign_keys WHERE name = 'FK_Albums_Artists';
परिणाम:
name | FK_Albums_Artists object_id | 981578535 principal_id | NULL schema_id | 1 parent_object_id | 949578421 type | F type_desc | FOREIGN_KEY_CONSTRAINT create_date | 2019-05-02 12:56:06.380 modify_date | 2019-05-02 12:56:06.380 is_ms_shipped | 0 is_published | 0 is_schema_published | 0 referenced_object_id | 885578193 key_index_id | 1 is_disabled | 0 is_not_for_replication | 0 is_not_trusted | 0 delete_referential_action | 0 delete_referential_action_desc | NO_ACTION update_referential_action | 0 update_referential_action_desc | NO_ACTION is_system_named | 0
उदाहरण 8 - sys.foreign_key_columns सिस्टम व्यू
sys.foreign_key_columns
सिस्टम व्यू में प्रत्येक कॉलम या कॉलम के सेट के लिए एक पंक्ति होती है, जिसमें एक विदेशी कुंजी होती है।
उदाहरण:
SELECT OBJECT_NAME(constraint_object_id) AS 'Foreign Key', OBJECT_NAME(parent_object_id) AS 'Table', OBJECT_NAME(referenced_object_id) AS 'Referenced Table' FROM sys.foreign_key_columns;
परिणाम:
+--------------------+---------+--------------------+ | Foreign Key | Table | Referenced Table | |--------------------+---------+--------------------| | FK_Albums_Artists | Albums | Artists | | FK_Albums_Genres | Albums | Genres | | FK_Artists_Country | Artists | Country | +--------------------+---------+--------------------+
और यह तब होता है जब FK_Albums_Artists
. के लिए सभी डेटा लौटाते हैं विदेशी कुंजी:
SELECT * FROM sys.foreign_key_columns WHERE OBJECT_NAME(constraint_object_id) = 'FK_Albums_Artists';
परिणाम:
constraint_object_id | 981578535 constraint_column_id | 1 parent_object_id | 949578421 parent_column_id | 4 referenced_object_id | 885578193 referenced_column_id | 1
उदाहरण 9 - sys.objects सिस्टम दृश्य
sys.objects
सिस्टम व्यू में प्रत्येक उपयोगकर्ता-परिभाषित, स्कीमा-स्कोप्ड ऑब्जेक्ट के लिए एक पंक्ति होती है जो डेटाबेस के भीतर बनाई जाती है। तो इसमें हमारी विदेशी चाबियों के बारे में जानकारी शामिल है।
उदाहरण:
SELECT OBJECT_NAME(parent_object_id) AS 'Table', name FROM sys.objects WHERE type = 'F';
परिणाम:
+---------+-------------------+ | Table | name | |---------+-------------------| | Albums | FK_Albums_Artists | | Albums | FK_Albums_Genres | +---------+-------------------+
इस उदाहरण में मैंने परिणामों को केवल विदेशी कुंजियों तक सीमित कर दिया (टाइप करें F
)।
यहां एक उदाहरण दिया गया है जो FK_Albums_Artists के लिए सभी डेटा लौटाता है विदेशी कुंजी:
SELECT * FROM sys.objects WHERE name = 'FK_Albums_Artists';
परिणाम (ऊर्ध्वाधर आउटपुट का उपयोग करके):
-[ RECORD 1 ]------------------------- name | FK_Albums_Artists object_id | 981578535 principal_id | NULL schema_id | 1 parent_object_id | 949578421 type | F type_desc | FOREIGN_KEY_CONSTRAINT create_date | 2019-05-02 12:56:06.380 modify_date | 2019-05-02 12:56:06.380 is_ms_shipped | 0 is_published | 0 is_schema_published | 0
उदाहरण 10 - sp_helpconstraint सिस्टम संग्रहित प्रक्रिया
sp_helpconstraint
सिस्टम संग्रहीत कार्यविधि सभी बाधा प्रकारों की एक सूची देता है, उनके उपयोगकर्ता-परिभाषित या सिस्टम द्वारा आपूर्ति किए गए नाम, जिन स्तंभों पर उन्हें परिभाषित किया गया है, और अभिव्यक्ति जो बाधा को परिभाषित करती है (DEFAULT
के लिए) और CHECK
केवल बाधाएं)।
इसलिए आप इसका उपयोग अपने डेटाबेस में विदेशी कुंजियों की जानकारी वापस करने के लिए कर सकते हैं।
उदाहरण:
EXEC sp_helpconstraint Albums;
परिणाम:
+---------------+ | Object Name | |---------------| | Albums | +---------------+ -[ RECORD 1 ]------------------------- constraint_type | FOREIGN KEY constraint_name | FK_Albums_Artists delete_action | No Action update_action | No Action status_enabled | Enabled status_for_replication | Is_For_Replication constraint_keys | ArtistId -[ RECORD 2 ]------------------------- constraint_type | constraint_name | delete_action | update_action | status_enabled | status_for_replication | constraint_keys | REFERENCES Music.dbo.Artists (ArtistId) -[ RECORD 3 ]------------------------- constraint_type | FOREIGN KEY constraint_name | FK_Albums_Genres delete_action | No Action update_action | No Action status_enabled | Enabled status_for_replication | Is_For_Replication constraint_keys | GenreId -[ RECORD 4 ]------------------------- constraint_type | constraint_name | delete_action | update_action | status_enabled | status_for_replication | constraint_keys | REFERENCES Music.dbo.Genres (GenreId) -[ RECORD 5 ]------------------------- constraint_type | PRIMARY KEY (clustered) constraint_name | PK__Albums__97B4BE379FC780BD delete_action | (n/a) update_action | (n/a) status_enabled | (n/a) status_for_replication | (n/a) constraint_keys | AlbumId
उदाहरण 11 - sp_help सिस्टम संग्रहित प्रक्रिया
sp_help
सिस्टम संग्रहीत कार्यविधि एक डेटाबेस ऑब्जेक्ट के बारे में जानकारी की रिपोर्ट करती है (sys.sysobjects
. में सूचीबद्ध कोई भी ऑब्जेक्ट) संगतता दृश्य), एक उपयोगकर्ता-परिभाषित डेटा प्रकार, या एक डेटा प्रकार। इसमें विदेशी कुंजियों के बारे में जानकारी शामिल है।
जब आप इसे बिना किसी तर्क के चलाते हैं, तो यह वर्तमान डेटाबेस में मौजूद सभी प्रकार की वस्तुओं की सारांश जानकारी के बारे में जानकारी प्रदान करता है (यानी एक लॉट जानकारी का)।
हालाँकि, आप किसी तालिका का नाम प्रदान कर सकते हैं, और वह उस तालिका के बारे में जानकारी लौटा देगी। फिर से, आपको बहुत सारी जानकारी वापस मिल जाएगी, लेकिन इसमें विदेशी कुंजी जानकारी होगी।
उदाहरण:
EXEC sp_help Albums;
परिणाम:
+--------+---------+------------+-------------------------+ | Name | Owner | Type | Created_datetime | |--------+---------+------------+-------------------------| | Albums | dbo | user table | 2019-05-02 12:56:06.370 | +--------+---------+------------+-------------------------+ -[ RECORD 1 ]------------------------- Column_name | AlbumId Type | int Computed | no Length | 4 Prec | 10 Scale | 0 Nullable | no TrimTrailingBlanks | (n/a) FixedLenNullInSource | (n/a) Collation | NULL -[ RECORD 2 ]------------------------- Column_name | AlbumName Type | nvarchar Computed | no Length | 510 Prec | Scale | Nullable | no TrimTrailingBlanks | (n/a) FixedLenNullInSource | (n/a) Collation | SQL_Latin1_General_CP1_CI_AS -[ RECORD 3 ]------------------------- Column_name | ReleaseDate Type | date Computed | no Length | 3 Prec | 10 Scale | 0 Nullable | no TrimTrailingBlanks | (n/a) FixedLenNullInSource | (n/a) Collation | NULL -[ RECORD 4 ]------------------------- Column_name | ArtistId Type | int Computed | no Length | 4 Prec | 10 Scale | 0 Nullable | no TrimTrailingBlanks | (n/a) FixedLenNullInSource | (n/a) Collation | NULL -[ RECORD 5 ]------------------------- Column_name | GenreId Type | int Computed | no Length | 4 Prec | 10 Scale | 0 Nullable | no TrimTrailingBlanks | (n/a) FixedLenNullInSource | (n/a) Collation | NULL +------------+--------+-------------+-----------------------+ | Identity | Seed | Increment | Not For Replication | |------------+--------+-------------+-----------------------| | AlbumId | 1 | 1 | 0 | +------------+--------+-------------+-----------------------+ +-------------------------------+ | RowGuidCol | |-------------------------------| | No rowguidcol column defined. | +-------------------------------+ +-----------------------------+ | Data_located_on_filegroup | |-----------------------------| | PRIMARY | +-----------------------------+ +------------------------------+---------------------------------------------------+--------------+ | index_name | index_description | index_keys | |------------------------------+---------------------------------------------------+--------------| | PK__Albums__97B4BE379FC780BD | clustered, unique, primary key located on PRIMARY | AlbumId | +------------------------------+---------------------------------------------------+--------------+ -[ RECORD 1 ]------------------------- constraint_type | FOREIGN KEY constraint_name | FK_Albums_Artists delete_action | No Action update_action | No Action status_enabled | Enabled status_for_replication | Is_For_Replication constraint_keys | ArtistId -[ RECORD 2 ]------------------------- constraint_type | constraint_name | delete_action | update_action | status_enabled | status_for_replication | constraint_keys | REFERENCES Music.dbo.Artists (ArtistId) -[ RECORD 3 ]------------------------- constraint_type | FOREIGN KEY constraint_name | FK_Albums_Genres delete_action | No Action update_action | No Action status_enabled | Enabled status_for_replication | Is_For_Replication constraint_keys | GenreId -[ RECORD 4 ]------------------------- constraint_type | constraint_name | delete_action | update_action | status_enabled | status_for_replication | constraint_keys | REFERENCES Music.dbo.Genres (GenreId) -[ RECORD 5 ]------------------------- constraint_type | PRIMARY KEY (clustered) constraint_name | PK__Albums__97B4BE379FC780BD delete_action | (n/a) update_action | (n/a) status_enabled | (n/a) status_for_replication | (n/a) constraint_keys | AlbumId