【SQLServer】テーブルごとの外部キーを確認する方法
-
カテゴリ:
- DB
-
タグ:
- #SQLServer
SQLServerで各テーブルに設定されている外部キーを参照するための方法をメモ。
SQLServerでは例のごとく、管理系のデータを見るためにはSQLを発行する必要があります。
以下は外部キーを参照するSQLの例です。
【SQL】
-- 外部キーを確認
SELECT
fk.parent_object_id AS 'ObjectId'
, fk.name AS '外部キーの論理名'
, OBJECT_NAME(fk.parent_object_id) AS 'テーブル名'
, COL_NAME(fc.parent_object_id, fc.parent_column_id) AS '外部キーの物理名'
, OBJECT_NAME (fk.referenced_object_id) AS '参照先テーブル名'
, COL_NAME(fc.referenced_object_id, fc.referenced_column_id) AS '参照先カラム名'
, fk.is_disabled
FROM sys.foreign_keys fk
INNER JOIN sys.foreign_key_columns AS fc
ON fk.object_id = fc.constraint_object_id
WHERE fk.parent_object_id = OBJECT_ID('[テーブル名]');
/* [補足]
・COL_NAME ( table_id , column_id )
テーブルの ID 番号とそのテーブルの列の ID 番号に基づいて、テーブルの列の名前を返す関数
・OBJECT_NAME ( object_id [, database_id ] )
オブジェクトIDからオブジェクト名を返す関数
・OBJECT_ID ( '[ database_name . [ schema_name ] . | schema_name . ] object_name' [ ,'object_type' ] )
オブジェクト名からオブジェクトIDを返す関数
※テーブル名を引数に渡せばそのテーブルのオブジェクトIDを取得できる
*/
【結果】
※クエリの結果はあくまでサンプルの内容になります。
ObjectId | 外部キーの論理名 | テーブル名 | 外部キーの物理名 | 参照先テーブル名 | 参照先カラム名 | is_disabled |
delete_referential |
update_referential _action_desc |
---|---|---|---|---|---|---|---|---|
21301 | FK_T_SAMPLE_LASTMODIFIED_BY_ID | T_SAMPLE | LAST_MODIFIEDBY_ID | M_USER | ID | False | NO_ACTION | NO_ACTION |
21301 | FK_T_MAUI_CREATEDBY_ID | T_SAMPLE | CREATEDBY_ID | M_USER | ID | False | NO_ACTION | NO_ACTION |
投稿日:2019-10-11
更新日:2019-10-31