【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