深入理解Oracle触发器类型(oracle触发器类型)

Oracle触发器是一种SQL语句,在数据库管理系统中表示特定事件,在特定的变量引发其它修改 操作,而无需用户参与。众所周知,触发器类型有三种,分别是行级触发器、标头级触发器与表的触发器。

行级触发器是具有某种在表上的更新或插入时自动触发行为的一种特殊的结构。例如,当表esalaries中出现了一条新的记录时,行级触发器 ON esalaries可能会执行语句,如:

create or replace triger trig1

before update or insert on esalaries

for each row

begin

insert into sal_audit

(name, old_sal, sal, updated_by, when_updated)

select :new.ename, :old.esal, :new.esal, :new.updated_by, sysdate

from dual;

end;

标头级触发器用于在每次给定表插入或更新一条新记录时只修改数据一次。标头级触发器与行级触发器不同。它并不是真正修改(或插入)现有行,而是确保只会有一次确定的变更。考虑一下这样的场景:一个表通过INSERT语句分别插入了10个新行。对于每一行,行级触发器将分别调用一次,而标头级触发器只会调用一次。

例如,标头级触发器 ON esalaries 可能会执行语句:

create or replace triger trig2

before update or insert on esalaries

for each row

begin

insert into sal_audit

(name, old_sal, sal, updated_by, when_updated)

select :new.ename, :old.esal, :new.esal, :new.updated_by, sysdate

from dual;

end;

表触发器是表上的程序,当对表进行特定操作时可以触发该触发器。它们比行级触发器和标头级触发器更全局,有时可以使用它们来执行额外的工作或简化业务流程。例如,在更新某一行的列之前,表触发器可以用来把该行记录写入另一张历史表中备份待用。

例如,表触发器 ON esalaries 可能会执行语句:

create or replace triger trig3

before update or insert on esalaries

begin

insert into sal_audit

(name, old_sal, sal, updated_by, when_updated)

select :new.ename, :old.esal, :new.esal, :new.updated_by, sysdate

from dual;

end;

总之,Oracle触发器是一种强大的数据库技术。它可以让你自动执行复杂的修改操作,而不需要用户手动编写SQL语句。这三种触发器类型提供了强大且用来开发应用程序更加方便和有效率的工具,它们是数据库开发者理应了解掌握的基础技能。


数据运维技术 » 深入理解Oracle触发器类型(oracle触发器类型)