触发器-sys_triggers
功能描述
sys_triggers系统表用于存储、管理系统库和用户库中所有创建的触发器信息。
字段说明
序号 | 字段名 | 类型 | 说明 |
---|---|---|---|
0 | DB_ID | OID_TYPE | 库ID |
1 | SCHEMA_ID | OID_TYPE | 模式ID |
2 | USER_ID | OID_TYPE | 属主ID |
3 | OBJ_ID | OID_TYPE | 触发对象的ID |
4 | TRIG_ID | OID_TYPE | 触发器ID |
5 | TRIG_NAME | VARCHAR | 触发器名 |
6 | TRIG_TIME | INTEGER | 触发时机 |
7 | TRIG_EVENT | INTEGER | 触发事件 |
8 | TRIG_TYPE | INTEGER | 触发器类型 |
9 | TRIG_COND | VARCHAR | 触发条件表达式 |
10 | LANGUAGE | CHAR | 过程语言类别 |
11 | DEFINE | CLOB | 过程定义的文本 |
12 | CREATE_TIME | DATETIME | 创建时间 |
13 | ENABLE | BOOLEAN | 是否使能 |
14 | VALID | BOOLEAN | 是否有效 |
15 | IS_SYS | BOOLEAN | 是否系统内建 |
16 | COMMENTS | VARCHAR | 注释信息 |
17 | RESERVED1 | VARCHAR | 保留字段 |
18 | RESERVED2 | VARCHAR | 保留字段 |
TRIG_EVENT
对象名 | 对象ID |
---|---|
INSERT | 1 |
UPDATE | 2 |
DELETE | 4 |
LOGON | 8 |
LOGOFF | 16 |
INSERT OR UPDATE | 3 |
UPDATE OR DELETE | 6 |
INSERT OR DELETE | 5 |
INSERT OR UPDATE OR DELETE | 7 |
TRIG_TYPE
对象名 | 对象ID |
---|---|
FOR EACH ROW | 1 |
FOR STATEMENT | 2 |
TRIG_TIME
对象名 | 对象ID |
---|---|
BEFORE | 1 |
INSTEAD | 2 |
AFTER | 4 |
示例
查询触发器的定义文本、触发时间、触发类型等相关信息
sqlSQL> CREATE TABLE tritb_info(deptno INT); SQL> CREATE OR REPLACE TRIGGER tri_info BEFORE INSERT ON tritb_info FOR EACH ROW WHEN(deptno>=50) BEGIN RAISE_APPLICATION_ERROR(-20000,'部门号超出规定'); END; / SQL> SELECT * FROM sys_triggers WHERE trig_name='TRI_INFO'; DB_ID | SCHEMA_ID | USER_ID | OBJ_ID | TRIG_ID | TRIG_NAME | TRIG_TIME | TRIG_EVENT | TRIG_TYPE | TRIG_COND | LANGUAGE | DEFINE | CREATE_TIME | ENABLE | VALID | IS_SYS | COMMENTS | RESERVED1 | RESERVED2 | ------------------------------------------------------------------------------ 1 | 1 | 1 | 1048601 | 1048602 | TRI_INFO| 1 | 1 | 1 | ("DEPTNO") >= (50)| PLSQL| CREATE OR REPLACE TRIGGER tri_info BEFORE INSERT ON tritb_info FOR EACH ROW WHEN(deptno>=50) BEGIN RAISE_APPLICATION_ERROR(-20000,'部门号超出规定'); END;| 2022-05-10 17:37:18.263 AD | T | T | F | <NULL>| <NULL>| <NULL>|
查询触发器拥有者、所属模式和所属库
相关系统表
- sys_databases
- sys_schemas
- sys_users
- sys_depends