INFORMATION_SCHEMA TRIGGERS ディクショナリビューは、トリガーに関する情報を提供します。テーブルのトリガー情報を確認するには、そのテーブルに対する TRIGGER 権限が必要です。
INFORMATION_SCHEMA TRIGGERS ディクショナリビューに含まれるフィールドは、次の表のとおりです。
フィールド名 |
説明 |
|---|---|
| TRIGGER_CATALOG | トリガーが属するディレクトリの名前。この値は常に def です。 |
| TRIGGER_SCHEMA | トリガーが属するシェーマ(データベース)の名前。 |
| TRIGGER_NAME | トリガー名。 |
| EVENT_MANIPULATION | トリガーイベント。これはトリガーが関連付けられているテーブル上で有効になる操作タイプです。この値は INSERT(1行挿入)、DELETE(1行削除)、または UPDATE(1行更新)を指定できます。 |
| EVENT_OBJECT_CATALOG、EVENT_OBJECT_SCHEMA、 EVENT_OBJECT_TABLE | 各トリガーは1つのテーブルにのみ関連付けられます。これらのフィールドは、それぞれそのテーブルが存在するディレクトリとシェーマ(データベース)、およびテーブル名を示します。EVENT_OBJECT_CATALOG の値は常に def です。 |
| ACTION_ORDER | 同一テーブル上で EVENT_MANIPULATION と ACTION_TIMING の値が同じであるトリガーリスト内での、トリガー操作の順序と位置。 |
| ACTION_CONDITION | この値は常に NULL です。 |
| ACTION_STATEMENT | トリガーが有効化されたときに実行されるステートメント。テキストはUTF-8エンコードです。 |
| ACTION_ORIENTATION | この値は常に ROW です。 |
| ACTION_TIMING | トリガーがトリガーイベントの前に有効化されるか後に有効化されるか。この値は BEFORE または AFTER を指定できます。 |
| ACTION_REFERENCE_OLD_TABLE | この値は常に NULL です。 |
| ACTION_REFERENCE_NEW_TABLE | この値は常に NULL です。 |
| ACTION_REFERENCE_OLD_ROW、ACTION_REFERENCE_NEW_ROW | 古い行識別子と新しい行識別子。ACTION_REFERENCE_OLD_ROW の値は常に OLD です。 ACTION_REFERENCE_NEW_ROW の値は常に NEW です。 |
| CREATED | トリガー作成日時。値の型は TIMESTAMP(2)(小数部は100分の1秒単位)。 |
| SQL_MODE | トリガー作成時に有効なSQLモード。 |
| DEFINER | DEFINER 句で指定されたアカウント(通常はトリガーを作成したユーザー)。形式は 'user_name'@'host_name' です。 |
| CHARACTER_SET_CLIENT | トリガー作成時の character_set_client システム変数の現在のセッションでの値。 |
| COLLATION_CONNECTION | トリガー作成時のcollation_connectionシステム変数の現在のセッションでの値。 |
| DATABASE_COLLATION | トリガーに関連付けられたデータベースの照合順序。 |
例:
obclient> SELECT * FROM INFORMATION_SCHEMA.TRIGGERS
WHERE TRIGGER_SCHEMA='test' AND TRIGGER_NAME='test_trg'\G
*************************** 1. row ***************************
TRIGGER_CATALOG: def
TRIGGER_SCHEMA: test
TRIGGER_NAME: test_trg
EVENT_MANIPULATION: UPDATE
EVENT_OBJECT_CATALOG: def
EVENT_OBJECT_SCHEMA: test
EVENT_OBJECT_TABLE: test
ACTION_ORDER: 0
ACTION_CONDITION: NULL
ACTION_STATEMENT: TRIGGER test_trg BEFORE UPDATE ON test
FOR EACH ROW
BEGIN
IF NEW.user_num < 1 THEN
SET NEW.user_num = 1;
ELSEIF NEW.user_num > 45 THEN
SET NEW.user_num= 45;
END IF;
END
ACTION_ORIENTATION: ROW
ACTION_TIMING: BEFORE
ACTION_REFERENCE_OLD_TABLE: NULL
ACTION_REFERENCE_NEW_TABLE: NULL
ACTION_REFERENCE_OLD_ROW: OLD
ACTION_REFERENCE_NEW_ROW: NEW
CREATED: 2022-05-18 18:07:51.994639
SQL_MODE: STRICT_ALL_TABLES,NO_ZERO_IN_DATE
DEFINER: 'root'@'%'
CHARACTER_SET_CLIENT: utf8mb4
COLLATION_CONNECTION: utf8mb4
DATABASE_COLLATION: utf8mb4