外部キー制約の発見
SQL Serverのヒントとトリック
これは、私は私は他の人に役立つことができると思います私は年間を通じて蓄積している簡単なヒントやトリックのシリーズの一部です.
場合は、同様の短いヒントやトリックをコメントを残してください.
すべての外部キー制約
よく設計されたデータベースは、データ完全性を保証するために、外国のキーリレーションを使用して、そのテーブルを互いに関連づけます.しかし、データベースが何百または何千ものテーブルを持っている巨大な課題を変更する必要があります特定のテーブルに関連するすべてのテーブルを見つけることができます.
以下のクエリは、特定の列名を持つ列間のすべての外部キー制約を検索します.
DECLARE @colname VARCHAR(200) = 'customer'
SELECT fk_tab.name as [table],
pk_columns.name as colname,
pk_tab.name as [fk_table],
fk_columns.name as fk_colname
FROM sys.foreign_keys fk
JOIN sys.tables fk_tab on fk_tab.object_id = fk.parent_object_id
JOIN sys.tables pk_tab on pk_tab.object_id = fk.referenced_object_id
JOIN sys.foreign_key_columns fk_cols on fk_cols.constraint_object_id = fk.object_id
JOIN sys.columns fk_columns ON fk_columns.object_id = fk_cols.referenced_object_id
AND fk_columns.column_id = fk_cols.referenced_column_id
JOIN sys.columns pk_columns ON pk_columns.object_id = fk_cols.parent_object_id
AND pk_columns.column_id = fk_cols.parent_column_id
WHERE fk_columns.name LIKE '%'+ @colname +'%' OR pk_columns.name LIKE '%'+ @colname +'%'
ORDER BY pk_tab.name
以下のNorthwindの例では、CustomerCustomerEdテーブルのCustomerTypeId列に、表CustomerDemographicsの主キー列CustomerTypeIDに外部キーの関係があることがわかります.Reference
この問題について(外部キー制約の発見), 我々は、より多くの情報をここで見つけました https://dev.to/coderallan/sql-quick-tip-8-finding-foreign-key-constraints-k8bテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol