深入浅出Oracle触发器类型(oracle触发器类型)
及用法
触发器是指数据发生更新、插入或者删除时,数据库会自动执行一条或多条sql语句进行操作,以此类推,如果有数据更新,就可以在触发器中执行一条或多条语句,实现某些业务逻辑。Oracle触发器类型及用法介绍如下:
1、前置触发器:这种触发器表示在insert/update/delete操作执行之前,将里面的语句先执行。前置触发器通常被用来在insert/update/delete之前进行权限的检查,保证数据的完整性,例如下面的例子:
CREATE OR REPLACE TRIGGER BILL_UPDATE_TRIG
before update on bill
for each row
begin
if :new.state = ‘D’ then
raise_application_error(-20010,’不允许禁用’);
end if;
end;
2、后置触发器或者称作反向触发器,表示在insert/update/delete操作结束之后,才执行里面的语句,可以完成触发器中定义的一些业务逻辑,例如 金额验证,记录操作日志。
CREATE OR REPLACE TRIGGER BILL_UPDATE_TRIG
after update on bill
for each row
begin
if :new.amount > 1000 then
insert into operation_log values(sysdate,:new.creator,:new.amount);
end if;
end;
3、后置触发器的另外一种形式就是行级触发器,它在insert/update/delete 操作发生之后执行,但是只有那条记录符合where条件时,才会被执行,和后置触发器最大的区别就是能够选择性执行触发器里面的业务逻辑,例如下面的例子
CREATE OR REPLACE TRIGGER BILL_UPDATE_TRIG
after update on bill
for each row
begin
if :old.state = ‘D’ and :new.state=’A’ then
insert into operation_log values(sysdate,:new.creator,:new.amount);
end if;
end;
Oracle触发器组合对应的操作大体可以分为前置触发器、后置触发器和行级触发器,它们通常是用来实现某些业务逻辑的,如数据的完整性,或者实现一些日志的记录要求,反之,它们也可以用来实现一些功能比较简单的业务逻辑。