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