Oracle触发器是指在特定的条件触发时执行特定的操作,是Oracle数据库中的一种被大量使用的数据库对象。它可以提高程序执行效率,并能够在操作改变数据库时做出反应。它把一种工作义务放在数据库服务器端,使程序员无需在写程序时处理该事务。
Oracle触发器可以分为三类:表触发器,块级触发器和系统事件触发器。
表触发器是以表操作为触发条件的触发器,主要是表的插入、更新和删除等,它有三种类型:BEFORE,AFTER和INSTEAD OF,它们对应用户执行操作之前、之后和替换,用来执行一些定义在数据库中的PL/SQL语句,以此来完成数据的保存及自动处理。
例如:创建BEFORE触发器,该触发器会在数据库中执行插入语句之前触发。可使用下面的代码:
CREATE OR REPLACE TRIGGER trg1
BEFORE INSERT
ON users
FOR EACH ROW
BEGIN
— Do something
END;
块级触发器是以PL\SQL语句块作为触发条件的触发器,比如一些SQL和PL\SQL的回调形式的操作。
例如:如果想创建一个在执行一些SELECT语句之后被触发的块级触发器,可使用下面的代码:
CREATE OR REPLACE TRIGGER trg2
AFTER SELECT
ON students
BEGIN
— Do something
END;
系统事件触发器是以特定的系统事件来触发的触发器,它有SERVERERROR,LOGON,LOGOFF,STARTUP和SHUTDOWN等,当它们被触发时,将会执行指定的语句。
例如:如果想在服务器启动时触发一个触发器,可使用下面的代码:
CREATE OR REPLACE TRIGGER trg3
BEFORE STARTUP
BEGIN
— Do something
END;
总的来说,Oracle触发器的特性使得用户可以在满足一定条件时自动执行对应的操作,而无需程序员在写程序时处理,因此可以提高程序执行效率,有效地改变数据库数据。