トリガーの詳細情報は、関連するデータ・ディクショナリ・ビューを通じて確認できます。これには、トリガーの名前、タイプ、対象となるテーブルなどが含まれます。
適用対象
この内容はOceanBaseデータベースEnterprise Editionにのみ適用されます。OceanBaseデータベースCommunity EditionはMySQLモードのみを提供します。
OceanBaseデータベースは、以下のトリガー関連データ・ディクショナリ・ビューをサポートしています:
USER_TRIGGERS:現在のユーザーが持つトリガーを記述します。DBA_TRIGGERS:データベース内のすべてのトリガーを記述します。ALL_TRIGGERS:現在のユーザーが持つテーブル上のトリガーを記述します。ユーザーがCREATE ANY TRIGGER権限を持っている場合、このビューはデータベース内のすべてのトリガーを記述します。
例1: 現在のユーザーが 持つトリガーを、タイプ、ステータス、対象となるテーブル、およびそのユーザーを含めて一覧表示します。
obclient> SELECT TRIGGER_NAME,TRIGGER_TYPE,TRIGGERING_EVENT,TABLE_OWNER,TABLE_NAME,
STATUS FROM USER_TRIGGERS;
+----------------+-----------------+------------------+-------------+------------+---------+
| TRIGGER_NAME | TRIGGER_TYPE | TRIGGERING_EVENT | TABLE_OWNER | TABLE_NAME | STATUS |
+----------------+-----------------+------------------+-------------+------------+---------+
| DEL_NEW_REGION | BEFORE EACH ROW | DELETE | SYS | REGIONS | ENABLED |
+----------------+-----------------+------------------+-------------+------------+---------+
1 row in set
例2: DEL_NEW_REGION トリガーの定義内容を確認します。
obclient> SELECT TRIGGER_BODY FROM USER_TRIGGERS WHERE TRIGGER_NAME='DEL_NEW_REGION'\G
*************************** 1. row ***************************
TRIGGER_BODY: TRIGGER del_new_region
BEFORE DELETE ON regions
FOR EACH ROW
WHEN (old.region_id >3)
BEGIN
INSERT INTO reg_his(region_id , region_name )
VALUES( :old.region_id, :old.region_name );
END
1 row in set
OceanBaseデータベースユーザーは、DBA_SOURCE、USER_SOURCE、およびDBA_OBJECTSビューを使用してトリガー関連情報を確認することもできます。クエリステートメントの例は以下のとおりです:
SELECT NAME FROM USER_SOURCE WHERE TYPE='TRIGGER' GROUP BY NAME;
SELECT NAME FROM DBA_SOURCE WHERE TYPE='TRIGGER';
SELECT OBJECT_NAME FROM DBA_OBJECTS WHERE OBJECT_TYPE='TRIGGER' AND OWNER='username';