SQLserverでテーブルに設定されている外部キー(FOREIGN KEY)の一覧を取得する必要があったので調査しました。
外部キー(foreign key、FK)は、コンピュータの関係データベースの関係モデルの文脈において、2つの関係変数(表)の間の参照整合性制約をいう。
外部キー(FOREIGN KEY)の情報を取得する
SQLServerで外部キー(FOREIGN KEY)の情報を取得するSQLを調べるとすぐに見つかりました。
ということで
SELECT
fk.name AS 外部キー名
,fkc.constraint_column_id as 外部キーカラムID
,pt.name AS 参照元テーブル名
,pc.name AS 参照元カラム名
,rt.name AS 参照先テーブル名
,rc.name AS 参照先カラム名
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.tables AS pt
ON fkc.parent_object_id = pt.object_id
INNER JOIN sys.columns AS pc
ON fkc.parent_object_id = pc.object_id AND
fkc.parent_column_id = pc.column_id
INNER JOIN sys.tables AS rt
ON fkc.referenced_object_id = rt.object_id
INNER JOIN sys.columns AS rc
ON fkc.referenced_object_id = rc.object_id AND
fkc.referenced_column_id = rc.column_id
ORDER BY
fk.name
,fkc.constraint_column_id
で検索することができます。
テーブルを指定して取得したければWHERE句に参照先のテーブルなどを指定すると目的のテーブルのものだけ取得することができます。
