深入浅出Oracle触发器类型及其用法(oracle触发器类型)

Oracle触发器(Trigger)是一种由Oracle服务器自动执行的一组SQL语句,它能在数据库表或视图上发生插入、更新和删除变化时自动地被执行。Oracle触发器主要用来自动实现数据库表里的数据操作,简单地说,就是当用户执行一个以上的操作(插入,删除或修改)时,会自动地去做一些检查或操作。

Oracle触发器主要分为三种类型:BEFORE触发器、AFTER触发器和INSTEAD OF触发器。

BEFORE触发器是数据库发生操作前执行,可以做一些权限控制,比如在插入、删除和更新前检查是否有权限去执行这些操作,以及记录日志等,如果没有有权限,则抛出异常,拒绝执行操作。 例如:

create or replace trigger tr_before

before insert or update

on tablename

for each row

begin

if :new.column1 is null

then

raise_application_error(-20001, ‘error message..’);

end if;

end;

AFTER触发器是数据库发生操作后执行,用来保存历史记录,可以用来追踪以前发生的数据操作,检查字段的有效性,记录日志等,例如:

Create or Replace Trigger tr_after

After update or delete

On tablename

For each Row

Begin

Insert into table_log values (:old.column1,

:old.column2);

End;

INSTEAD OF触发器是ORACLE特有的,它比BEFORE和AFTER触发器要复杂,主要用来实现视图插入、修改和删除操作,把操作转换成可以操作表的操作,从而达到访问表的目的。例如:

Create or Replace Trigger tr_instead_of

Instead of insert or update or delete

On view_name

For Each Row

Begin

If Inserting then

Insert into tablename values (:old.column1,

:old.column2);

Elsif Updating then

Update tablename

Set column1= :old.column1

Where column2 = :old.column2;

Else

Delete from tablename

Where column2 = :old.column2;

End If;

End;

以上是Oracle触发器的三种类型及其用法的简介,Oracle触发器是数据库中重要的一个部分,能够极大地简化开发人员的工作,因此,在学习Oracle数据库技术时,熟悉Oracle触发器及其用法是很有必要的。


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