Oracle 数据库中的触发器类型(oracle触发器类型)

oracle数据库中的触发器是一种特殊的存储过程,可以在异常事件或表的变化时自动调用,以达到记录日志、修改数据或维护数据的目的。

表触发器: 当对表进行数据更改操作时,触发器会自动被调用,是将更改前后的字段值进行比较,进行条件动作或存储过程的调用,通常触发器只能作用在特定的运算操作,如果操作不满足执行的条件,则不会被调用。

下面是一个常用的表触发器实例:

create trigger insert_update_trigger

before insert or update of a,b on test

for each row

begin

if new.ab then

insert into log values (a,b);

end if;

end;

/

这里,insert_update_trigger是触发器的名称;before是触发器时机,代表是在数据发生改变之前调用;insert or update of a,b :代表当a,b值发生变化时,调用触发器,如果发生其他操作,则不调用;for each row:按行操作,此时new.X表示变化后的字段,可以拿来跟X作比较。

Dml 触发器: DML触发器可以对操作数据的语句进行监听,例如 insert,update,delete,merge等操作,只支持表级触发器。

如下:

create trigger delete_trigger

after delete

on tablename

for each row

begin

insert into log values(delete); //记录删除操作

end;

/

在dml触发器中,通过for each row,可以访问语句操作每行的值,可以根据行值作相应处理,例如log操作和对行进行修改等。

System 触发器:System 触发器是表级的,只对database成员做操作,如DDL,DBMS_ALERT, Server Errors等。

如下:

create trigger error_trigger

after DDL

on database

begin

insert into log values(server errors);

end;

/

System触发器是用来捕获错误的,从而做log的记录,此外,系统触发器也可以监听DDL等操作,当DDL等相关操作发生变化时,能及时捕获每一变化,从而对变化做出相应处理。

总之,Oracle中不同的触发器类型,可以满足不同时机下的应用场景,并能灵活处理数据,在实现某些功能上能提高效率。


数据运维技术 » Oracle 数据库中的触发器类型(oracle触发器类型)