首批通过分布式安全可靠测评,为关键业务系统打造
ALL_TRIGGERS
更新时间:2026-07-15 20:56:59
说明
该视图从 V2.2.30 版本开始引入。
功能描述
展示当前用户可访问的表上的触发器。如果用户具有 CREATE ANY TRIGGER 权限,则该视图用于描述当前租户下的所有触发器。
功能适用性
该视图仅适用于 OceanBase 数据库 Oracle 模式。
字段说明
| 字段名称 | 类型 | 是否可以为 NULL | 描述 |
|---|---|---|---|
| OWNER | VARCHAR2(128) | NO | 触发器 OWNER |
| TRIGGER_NAME | VARCHAR2(128) | NO | 触发器名字 |
| TRIGGER_TYPE | VARCHAR2(16) | NO | 触发器类型:
|
| TRIGGERING_EVENT | VARCHAR2(246) | NO | 触发事件,当前 OceanBase 数据库仅支持 INSERT、UPDATE、DELETE等。 |
| TABLE_OWNER | VARCHAR2(128) | NO | 表 OWNER,触发对象类型为表时有效。 |
| BASE_OBJECT_TYPE | VARCHAR2(18) | NO | 触发对象类型,当前 OceanBase 数据库仅支持 TABLE。 |
| TABLE_NAME | VARCHAR2(256) | NO | 表名,触发对象类型为表时有效。 |
| COLUMN_NAME | VARCHAR2(4000) | NO | 列名,仅在触发对象为嵌套表时有效,其它情况为 NULL。 |
| REFERENCING_NAMES | VARCHAR2(422) | NO | REF 名,OLD 和 NEW 的别名。 |
| WHEN_CLAUSE | VARCHAR2(4000) | YES | 触发条件 |
| STATUS | VARCHAR2(8) | NO | 状态:
|
| DESCRIPTION | VARCHAR2(65536) | NO | 触发器描述,包括名字、类型、事件信息。 |
| ACTION_TYPE | VARCHAR2(11) | NO | ACTION 类型,当前 OceanBase 数据库仅支持 PL/SQL。 |
| TRIGGER_BODY | VARCHAR2(65536) | NO | 触发器语句。 |
| CROSSEDITION | VARCHAR2(7) | NO | 跨版本信息,当前 OceanBase 数据库不支持。 |
| BEFORE_STATEMENT | VARCHAR2(3) | NO | 语句前,YES/NO。表示组合触发器是否包含指定类型的 Section。 |
| BEFORE_ROW | VARCHAR2(3) | NO | 行前,YES/NO。表示组合触发器是否包含指定类型的 Section。 |
| AFTER_ROW | VARCHAR2(3) | NO | 行后,YES/NO。表示组合触发器是否包含指定类型的 Section。 |
| AFTER_STATEMENT | VARCHAR2(3) | NO | 语句后,YES/NO。表示组合触发器是否包含指定类型的 Section。 |
| INSTEAD_OF_ROW | VARCHAR2(3) | NO | 代替,YES/NO。表示组合触发器是否包含指定类型的 Section。 |
| FIRE_ONCE | VARCHAR2(3) | NO | 目前暂不支持该字段 |
| APPLY_SERVER_ONLY | VARCHAR2(3) | NO | 目前暂不支持该字段 |
查询示例
查看当前用户可访问的所有触发器。
obclient[SYS]> SELECT * FROM SYS.ALL_TRIGGERS\G
查询结果如下:
*************************** 1. row ***************************
OWNER: SYS
TRIGGER_NAME: ORDER_LIST_INSERT
TRIGGER_TYPE: INSTEAD OF
TRIGGERING_EVENT: INSERT
TABLE_OWNER: SYS
BASE_OBJECT_TYPE: VIEW
TABLE_NAME: ORDER_LIST
COLUMN_NAME: NULL
REFERENCING_NAMES: REFERENCING NEW AS NEW OLD AS OLD
WHEN_CLAUSE: NULL
STATUS: ENABLED
DESCRIPTION: NULL
ACTION_TYPE: PL/SQL
TRIGGER_BODY: TRIGGER order_list_insert
INSTEAD OF INSERT ON order_list
DECLARE
duplicate_info EXCEPTION;
PRAGMA EXCEPTION_INIT (duplicate_info, -00001);
BEGIN
INSERT INTO customers
(customer_id, cust_last_name, cust_first_name)
VALUES (
:new.customer_id,
:new.cust_last_name,
:new.cust_first_name);
INSERT INTO orders (order_id, order_date, customer_id)
VALUES (
:new.order_id,
:new.order_date,
:new.customer_id);
EXCEPTION
WHEN duplicate_info THEN
RAISE_APPLICATION_ERROR (
-20107,
'Duplicate customer or order ID');
END order_list_insert
CROSSEDITION: NO
BEFORE_STATEMENT: NO
BEFORE_ROW: YES
AFTER_ROW: NO
AFTER_STATEMENT: NO
INSTEAD_OF_ROW: YES
FIRE_ONCE: YES
APPLY_SERVER_ONLY: NO
1 row in set
相关视图或文档
查看当前租户下的所有触发器:DBA_TRIGGERS
查看当前用户拥有的触发器:USER_TRIGGERS
有关触发器的介绍和使用,参见 创建和管理触发器。