【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
_action_desc

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

[スポンサーリンク]

  
サイト内検索
プロフィール

プロフィール

[Name : じゃぶじゃぶ(@jbjb_2019)]
都内で社内SEをしているおじさん。
仕事で得られる知識だけでは限界を感じ、 WEBの勉強がてらITブログを開始。
サーバからWEBサイトまでフルスクラッチで開発しました。
現在は勉強のモチベーションを保つために活用中。
興味があることを雑記的に書いていきます。

[スポンサーリンク]

[スポンサードリンク]

最近の記事