【SQLServer】トリガーの定義情報を確認する方法
-
カテゴリ:
- DB
-
タグ:
- #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