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

T-SQL का उपयोग करके SQL सर्वर डेटाबेस में विदेशी कुंजी वापस करने के 11 तरीके

यह आलेख 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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. तालिका को छोटा नहीं कर सकता क्योंकि इसे एक विदेशी कुंजी बाधा द्वारा संदर्भित किया जा रहा है?

  2. SQL सर्वर एक्सप्रेस संस्करण में नौकरियां कैसे पैदा करें

  3. जांचें कि क्या तालिका में OBJECTPROPERTY () के साथ SQL सर्वर में टाइमस्टैम्प कॉलम है

  4. SQL सर्वर लॉगिन के लिए पासवर्ड बदलें

  5. SQL सर्वर COALESCE () समझाया गया