परिदृश्य:
आप 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 सर्वर में प्राथमिक कुंजी तालिका, विदेशी कुंजी तालिका और बाधा नाम कैसे प्राप्त करें