?深入浅出Oracle触发器类型(oracle触发器类型)

Oracle触发器是一种数据库内部级别的操作,它可以在存储过程完成前触发自动执行指定的操作。Oracle触发器有三种类型,分别为表级触发器,行级触发器和数据库触发器。

表级触发器在表上通过触发器语句实现触发。在某一天进行插入、更新、删除操作时,它会以DML语句触发某一种操作:

1、当在表上执行INSERT操作时,将触发INSERT触发器,此时INSERT触发器里面的语句将会被执行;

2、当在表上执行UPDATE操作时,将触发UPDATE触发器,此时UPDATE触发器里面的语句将会被执行;

3、当在表上执行DELETE操作时,将触发DELETE触发器,此时DELETE触发器里面的语句将会被执行。

例如:假设在表emp上定义了INSERT触发器:

CREATE OR REPLACE TRIGGER insert_emp

AFTER INSERT ON emp

FOR EACH ROW

BEGIN

INSERT INTO log (tablename, operation, time)

VALUES (’emp’, ‘INSERT’, SYSDATE);

END;

当在表emp上执行INSERT操作时,它会触发INSERT触发器,从而在表log中插入一条记录:

表名: emp

操作: INSERT

时间: SYSDATE

行级触发器也是在表上定义的,不同的是行级触发器会在表的每一行发生插入、更新或删除操作时触发,可以实现当更新某一行数据时触发其他操作等。例如,当在表EMP上更新sal列时,可以用下面的行级触发器实现触发INSERT操作:

CREATE OR REPLACE TRIGGER update_sal

AFTER UPDATE OF SAL ON emp

FOR EACH ROW

BEGIN

INSERT INTO log (tablename, operation, time)

VALUES (’emp’, ‘UPDATE_SAL’, SYSDATE);

END;

当在表EMP上执行UPDATE操作时,它会触发UPDATE触发器,从而在表log中插入一条记录:

表名: emp

操作: UPDATE_SAL

时间: SYSDATE

最后,数据库触发器是对数据库本身发生某种操作时触发,例如当用户登陆数据库,或者在表上提交某一种操作,都会被触发。例如,当用户登录数据库时,可以用下面的数据库触发器实现触发INSERT操作:

CREATE OR REPLACE TRIGGER logon_trigger

AFTER LOGON ON DATABASE

BEGIN

INSERT INTO log (tablename, operation, time)

VALUES (‘DATABASE’, ‘LOGON’, SYSDATE);

END;

当用户登录数据库时,它会触发LOGON触发器,从而在表log中插入一条记录:

表名: Database

操作: Logon

时间: SYSDATE

综上所述,Oracle触发器有三种类型,表级触发器,行级触发器和数据库触发器,均可以满足不同的细粒度控制要求,帮助数据库更加安全和高效地运行。


数据运维技术 » ?深入浅出Oracle触发器类型(oracle触发器类型)