1. はじめに
- SQL Serverに登録しているトリガー情報をまとめて取得したい
2. 開発環境
- SQL Server 2017
3. SQL文
SELECT
O.name AS 'テーブル名'
, O.type_desc AS 'オブジェクト区分'
, TR.name AS 'トリガー名'
, TE.type_desc AS 'トリガータイプ'
, CASE TR.is_disabled WHEN 0 THEN '有効' ELSE '無効' END 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
;
4. 使用テーブルの説明
テーブル名 | 説明 |
---|---|
sys.objects | データベース内に作成されているユーザー定義のスキーマ スコープ オブジェクト (ネイティブ コンパイルされたスカラー ユーザー定義関数を含む) ごとに 1 つの行が含まれます。 https://learn.microsoft.com/ja-jp/sql/relational-databases/system-catalog-views/sys-objects-transact-sql?view=sql-server-ver16 |
sys.triggers | TR トリガーまたは TA トリガーであるオブジェクトごとに、1 行のデータを格納します。 DML トリガー名はスキーマ スコープであるため、 sys.objectsに表示されます。 DDL トリガー名は親エンティティによってスコープ指定され、このビューでのみ表示されます。 https://learn.microsoft.com/ja-jp/sql/relational-databases/system-catalog-views/sys-triggers-transact-sql?view=sql-server-ver16 |
sys.trigger_events | トリガーが起動されるイベントごとに 1 行のデータを保持します。 https://learn.microsoft.com/ja-jp/sql/relational-databases/system-catalog-views/sys-trigger-events-transact-sql?view=sql-server-ver16 |
sys.all_sql_modules | sys.sql_modules と sys.system_sql_modules の和集合を返します。 https://learn.microsoft.com/ja-jp/sql/relational-databases/system-catalog-views/sys-all-sql-modules-transact-sql?view=sql-server-ver16 |
5. 参考文献