深入浅出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触发器及其用法是很有必要的。