Skip to content

触发器-sys_triggers

功能描述

sys_triggers系统表用于存储、管理系统库和用户库中所有创建的触发器信息。

字段说明

序号字段名类型说明
0DB_IDOID_TYPE库ID
1SCHEMA_IDOID_TYPE模式ID
2USER_IDOID_TYPE属主ID
3OBJ_IDOID_TYPE触发对象的ID
4TRIG_IDOID_TYPE触发器ID
5TRIG_NAMEVARCHAR触发器名
6TRIG_TIMEINTEGER触发时机
7TRIG_EVENTINTEGER触发事件
8TRIG_TYPEINTEGER触发器类型
9TRIG_CONDVARCHAR触发条件表达式
10LANGUAGECHAR过程语言类别
11DEFINECLOB过程定义的文本
12CREATE_TIMEDATETIME创建时间
13ENABLEBOOLEAN是否使能
14VALIDBOOLEAN是否有效
15IS_SYSBOOLEAN是否系统内建
16COMMENTSVARCHAR注释信息
17RESERVED1VARCHAR保留字段
18RESERVED2VARCHAR保留字段

TRIG_EVENT

对象名对象ID
INSERT1
UPDATE2
DELETE4
LOGON8
LOGOFF16
INSERT OR UPDATE3
UPDATE OR DELETE6
INSERT OR DELETE5
INSERT OR UPDATE OR DELETE7

TRIG_TYPE

对象名对象ID
FOR EACH ROW1
FOR STATEMENT2

TRIG_TIME

对象名对象ID
BEFORE1
INSTEAD2
AFTER4

示例

  • 查询触发器的定义文本、触发时间、触发类型等相关信息

    sql
    SQL> 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