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

SQL सर्वर में पैरेंट टेबल, संदर्भ तालिका, विदेशी कुंजी बाधा नाम और कॉलम कैसे प्राप्त करें - SQL सर्वर / TSQL ट्यूटोरियल भाग 71

परिदृश्य:

आप SQL सर्वर डेवलपर के रूप में काम कर रहे हैं, आपको वह क्वेरी प्रदान करने के लिए कहा जाता है जो विदेशी कुंजी बाधा परिभाषा में उपयोग किए गए सभी मूल तालिकाओं, संदर्भ तालिकाओं, विदेशी कुंजी बाधाओं और स्तंभों को वापस कर दे।

समाधान:

हम इस जानकारी को इकट्ठा करने के लिए सिस्टम दृश्यों का उपयोग कर सकते हैं। नीचे दिए गए प्रश्न में हम उत्तर देने के लिए तीन

सिस्टम दृश्य
sys.foreign_keys
sys.foreign_key_columns
sys.columns

का उपयोग करेंगे अनुरोध। चूंकि हमारे पास विदेशी कुंजी बाधा में उपयोग किए जाने वाले समग्र प्राथमिक कुंजी कॉलम हो सकते हैं, मैंने कॉलम में पंक्तियों को जोड़ने के लिए एक्सएमएल पथ के लिए उपयोग किया है ताकि एकल पंक्ति में कॉलम की सूची प्रदान कर सकें।

;With CTE_FK AS (
SELECT Schema_Name(Schema_id) as TableSchemaName,
  object_name(FK.parent_object_id) ParentTableName,
  object_name(FK.referenced_object_id) ReferenceTableName,
  FK.name AS ForeignKeyConstraintName,c.name as ReferencedColumnList,
  cf.name as ParentColumnName 
       FROM sys.foreign_keys AS FK
       INNER JOIN sys.foreign_key_columns AS FKC
               ON FK.OBJECT_ID = FKC.constraint_object_id
               INNER JOIN sys.columns c
          on  c.OBJECT_ID = FKC.referenced_object_id
                 AND c.column_id = FKC.referenced_column_id
                 INNER JOIN sys.columns cf
          on  cf.OBJECT_ID = FKC.parent_object_id
                 AND cf.column_id = FKC.parent_column_id
                 )
                 Select TableSchemaName,
                 ParentTableName,
                 ReferenceTableName,
                 ForeignKeyConstraintName,stuff((
                 Select ','+ParentColumnName
                 from CTE_FK i
                 where i.ForeignKeyConstraintName=o.ForeignKeyConstraintName
                 and i.TableSchemaName=o.TableSchemaName
                 and i.ParentTableName=o.ParentTableName
                 and i.ReferenceTableName=o.ReferenceTableName
                 for xml path('')), 1, 1, '') ParentColumnList
                 ,stuff((
                 Select ','+ReferencedColumnList
                 from CTE_FK i
                 where i.ForeignKeyConstraintName=o.ForeignKeyConstraintName
                 and i.TableSchemaName=o.TableSchemaName
                 and i.ParentTableName=o.ParentTableName
                 and i.ReferenceTableName=o.ReferenceTableName
                 for xml path('')), 1, 1, '') RefColumnList
                 from CTE_FK o
                 group by 
                 tableSchemaName,
                 ParentTableName,
                 ReferenceTableName,
                 ForeignKeyConstraintName


मैंने अपने डेटाबेस में से एक पर उपरोक्त स्क्रिप्ट को निष्पादित किया है और यहां स्कीमा नाम, मूल तालिका नाम, संदर्भित तालिका नाम, विदेशी कुंजी बाधा नाम, अभिभावक कॉलम सूची और संदर्भ कॉलम सूची का उपयोग बाधा में किया गया है।
मूल तालिका, संदर्भित तालिका, विदेशी कुंजी बाधा नाम, SQL सर्वर में कॉलम सूची कैसे प्राप्त करें


वीडियो डेमो :SQL सर्वर में प्राथमिक कुंजी तालिका, विदेशी कुंजी तालिका और बाधा नाम कैसे प्राप्त करें

  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 सर्वर में किसी संख्या को 2 दशमलव स्थानों पर प्रारूपित करने के लिए 4 कार्य

  3. आप डेटाबेस में विरासत का प्रतिनिधित्व कैसे कर सकते हैं?

  4. क्या एक एकल SQL सर्वर कथन परमाणु और सुसंगत है?

  5. SQL में एकाधिक तालिकाओं में शामिल होना