トリガーの詳細情報は、関連するデータ・ディクショナリ・ビューを通じて確認できます。これには、トリガーの名前、タイプ、作用対象となるテーブルなどが含まれます。
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';