【SQLServer】トリガーの定義情報を確認する方法

SQLServerでトリガーの定義情報を確認する方法をご紹介します。

最近SQLServerをよく使うようになって、段々と使い方に慣れてきました。

SQLServerでユーザテーブルに限らず、トリガーやプロシージャの詳細情報もすべてテーブルで管理しているっぽい。

そこでよく使われるのが「sys.××」というやつ。すべて確認する際はSELECT文を投げて内容を見る運用なんだなぁと理解しました。

今回はトリガーの詳細情報を確認したく、MySQLの「show create trigger」的なものがないかなぁと調べていらたら、結局「sys.triggers」オブジェクトに対してSELECT文を発行して確認する方法にたどり着きました。

【SQL】

-- トリガー詳細
SELECT 
    O.name AS 'テーブル名'
    , O.type_desc AS 'オブジェクト区分'
    , TR.name AS 'トリガー名'
    , TE.type_desc AS 'トリガー操作'
    , S.definition AS 'クエリ'
FROM sys.triggers TR
INNER JOIN sys.objects O
    ON TR.parent_id = O.object_id
INNER JOIN sys.trigger_events TE
    ON TE.object_id = TR.object_id
INNER JOIN sys.all_sql_modules S 
    ON S.object_id = TR.object_id 
;

/*[補足]
sys.objects:ユーザテーブル、トリガーなどすべてのオブジェクト一覧
sys.triggers:トリガー一覧
sys.trigger_events:トリガーと各オブジェクトの操作(INSERT、UPDATE)
sys.all_sql_modules:ストアドプロシージャやトリガーのクエリ内容
**/

 

【結果】

※クエリの結果はあくまでサンプルの内容になります。

テーブル名 オブジェクト区分 トリガー名 トリガー操作 クエリ
T_SAMPLE1 USER_TABLE TRIGGER_T_SAMPLE1_UPDATED UPDATE CREATE TRIGGER  TRIGGER_T_SAMPLE1_UPDATED
ON  T_SAMPLE1  AFTER UPDATE AS …
T_SAMPLE1 USER_TABLE TRIGGER_T_SAMPLE1_DELETED UPDATE CREATE TRIGGER  TRIGGER_T_SAMPLE1_DELETED
ON  T_SAMPLE1  AFTER UPDATE AS …
T_SAMPLE1 USER_TABLE TRIGGER_T_SAMPLE1_INSERTED INSERT CREATE TRIGGER  TRIGGER_T_SAMPLE1_INSERTED
ON  T_SAMPLE1  AFTER INSERT AS …
T_SAMPLE2 USER_TABLE TRIGGER_T_SAMPLE2_UPDATED UPDATE CREATE TRIGGER  TRIGGER_T_SAMPLE2_UPDATED
ON  T_SAMPLE1  AFTER UPDATE AS …
T_SAMPLE2 USER_TABLE TRIGGER_T_SAMPLE2_INSERTED INSERT CREATE TRIGGER  TRIGGER_T_SAMPLE2_INSERTED
ON  T_SAMPLE1  AFTER INSERT AS …

 



投稿日:2019-09-11    更新日:2019-09-13

[スポンサーリンク]

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

プロフィール

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

[スポンサーリンク]

[スポンサードリンク]

最近の記事