灵活利用:Oracle触发器的4种类型(oracle触发器类型)
在Oracle中,触发器是一种特殊的数据库对象,可以自动地响应表或表中某行发生特定更改时触发一些用户定义的操作,从而可以实现一些自动化的处理。在Oracle中有4种不同类型的触发器,灵活利用这4种触发器可以帮助我们节省时间,提高工作效率。下面结合相关实例将介绍Oracle触发器的4种类型,用以帮助我们灵活应用其特殊功能。
1. 修改型触发器:
修改型触发器可以响应表或表中某行的更改,从而触发一些用户定义的操作。例如,当插入或更改表中的某行时,可以在修改触发器中实现对同样数据的自动更新,下面的例子就是这种情况。
(例子)
create or replace trigger trigAfterUpdate
after update of deptno on emp
for each row
begin
update emp
set deptno = :new.deptno
where empid = :old.empid;
end;
/
2. 删除型触发器
删除型触发器可以响应删除表或表中某行的操作,从而触发一些用户定义的操作。例如,当在表中删除某行时,可以实现对这行数据的日志记录,而不用手工操作。下面的例子正是这种情况:
(例子)
create or replace trigger trigAfterDelete
after delete on emp
for each row
begin
insert into emp_log values (:old.empid, :old.name, sysdate);
end;
/
3. 插入型触发器
插入型触发器可以响应对表中进行插入操作,从而触发一些用户定义的操作。例如,当向表中插入某行时,可以在触发器中处理待插入行的数据,从而使得插入操作更加安全,下面的例子正是这种情况。
(例子)
create or replace trigger trigBeforeInsert
before insert on emp
for each row
begin
if :new.deptno > 10 then
raise_application_error(-20001, ‘deptno cannot more than 10!’);
end if;
end;
/
4. 异常型触发器
异常型触发器是Oracle中很特殊的一种,和之前介绍的触发器有很大不同,它可以在引发某种异常(而不是简单表操作之类的)时被触发。下面的例子展示了如何在事务出错时抛出错误,以及如何处理异常信息。
(例子)
create or replace trigger trigException
on database
declare
procedure raise_exception
begin
raise no_data_found;
end raise_exception;
begin
EXECUTE IMMEDIATE ‘raise_exception’;
exception
when NO_DATA_FOUND then
dbms_output.put_line(‘no data found exception!’);
end;
/
综上可见,对于不同的表操作,我们可以通过4种不同类型的 Oracle 触发器来处理,灵活利用触发器,可以有效节约人力,实现自动化处理,从而帮助我们提高软件开发过程的效率。