0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

SQL Serverのトリガーの定義を確認する

Posted at

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. 参考文献

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?