【ORACLE】トリガーの一覧や定義を確認するSQL


ここではORACLEデータベースでトリガー(TRIGGER)の一覧を確認するSQLを紹介しています。

トリガーの作成方法については↓で紹介していますので参考にしてください。
>>【ORACLE】トリガーを作成・変更・削除するSQL

トリガーの一覧を確認するSQL

トリガーの一覧はDBA_TRIGGERSで取得することが出来ます。

DBA_TRIGGERSでは全てのトリガーの一覧を確認することが出来ます。

トリガーの定義は「TRIGGER_BODY」列で確認できます。

※現行ユーザーがアクセスできるトリガーのみを参照する場合はALL_TRIGGERSを参照します。

SELECT * FROM DBA_TRIGGERS;

DBA_TRIGGERSの主な列は次の通りです。
・OWNER
 トリガーの所有者
・TRIGGER_NAME
 トリガーの名前
・TRIGGER_TYPE
 トリガーが起動するタイミング
 BEFORE STATEMENT、BEFORE EACH ROW、AFTER STATEMENT
 AFTER EACH ROW、INSTEAD OF、COMPOUND
・TRIGGERING_EVENT
 DML、DDL、またはトリガーを起動するイベント
・TABLE_OWNER
 トリガーが定義された表の所有者
・BASE_OBJECT_TYPE
 トリガーが定義されたオブジェクト
 TABLE、VIEW、SCHEMA、DATABASE
・TABLE_NAME
 トリガーが定義されている表名またはビュー名
 トリガーのオブジェクト型がSCHEMAまたはDATABASEの場合はNULL
・COLUMN_NAME
 ネストした表の列名。それ以外の場合はNULL。
・REFERENCING_NAMES
 トリガー内からOLDおよびNEW列の値を参照するために使用される名前
・WHEN_CLAUSE
 TRIGGER_BODYが実行されるためには、この式がTRUEに評価される必要がある
・STATUS
 トリガーのステータス
 使用可能(ENABLED)、使用禁止(DISABLED)
・DESCRIPTION
 トリガーの説明
・ACTION_TYPE
 トリガー本体の実行形式(CALL、PL/SQL)
・TRIGGER_BODY
 トリガーが実行する処理
・CROSSEDITION
 CROSSEDITIONトリガーのタイプ
 FORWARD、REVERSE、NO
・BEFORE_STATEMENT
 BEFORE STATEMENTセクションがあるかどうか(YES /NO)。
・BEFORE_ROW
 BEFORE EACH ROWセクションがあるかどうか(YES/NO)。
・AFTER_ROW
 AFTER EACH ROWセクションがあるかどうか(YES /NO)。
・AFTER_STATEMENT
 AFTER STATEMENTセクションがあるかどうか(YES /NO)。
・INSTEAD_OF_ROW
 INSTEAD OFセクションがあるかどうか(YES/NO)。

まとめ

トリガーの一覧はDBA_TRIGGERSで確認できます。

トリガーの作成や変更、削除には↓の権限が必要です。
 作成:CREATE TRIGGER、CREATE ANY TRIGGER
 変更:ALTER ANY TRIGGER
 削除:DROP ANY TRIGGER

システム権限の付与の方法については↓で紹介していますので参考にしてください。
>>【ORACLE】システム権限を付与・取消するSQL