Oracle数据库的触发器类型详解(oracle触发器类型)
Oracle数据库触发器类型详解
Oracle数据库的触发器可以根据不同的需要,分为不同的类型。它们的特点有:DML触发器、DDL触发器和数据库触发器。其中,DML触发器是指触发由数据库存储过程或视图访问某个表时,在该表上执行的特殊操作。而DDL触发器指的是当ddl(数据库定义语言)语句执行时,触发的操作。数据库触发器是指用来处理某一类数据库事件的触发器,如对服务器或者数据库的异常状态的处理等。下面将介绍Oracle数据库触发器的三种类型:
一、DML触发器
DML (Data Manipulation Language)触发器是Oracle数据库触发器中最常见的一种。具体定义为:在INSERT,UPDATE和DELETE或者ANY DML语句执行时,将触发触发器指定的行为。
举个例子:
create or replace trigger emp_update before
update of sal,comm on emp
for each row
begin
–新薪资大于旧薪资
if :new.sal > :old.sal then
–新佣金等于旧薪资
:new.comm := :old.sal;
end if;
end;
此类触发器将在更新emp表的薪资sal和佣金comm时触发,在此过程中,薪资老大于新时,新佣金将等于老薪资。
二、DDL触发器
DDL (Data Definition Language)触发器是Oracle数据库的另一种常见触发器,“Checkpoint”,“Startup”等事件都可以触发它。它定义为:当用DDL语句更改数据库对象或者结构时,将触发触发器指定的行为。
举个例子:
create or replace trigger t_alert
before create on database
begin
dbms_alert.signal(‘Alert_Signal’, ‘Table_structure_change’);
end;
当DDL更新数据库结构时,将发出alert_signal信号。
三、数据库触发器
数据库触发器时Oracle数据库触发器中最特殊的类型,它根据要处理的对象,按照不同的规则触发操作,它可以根据Oracle Database的服务、数据库的活动级别等不同的事件触发操作。
举个例子:
create or replace trigger t_startup
after startup on database
begin
–when the db starts, you can automatically run the sql below
execute immediate ‘alter system set auxiliary_instance=”instance6” sid=”ttc”’ ;
end;
/
当database启动时,自动执行修改auxiliary_instance为instance6,sid为ttc的SQL命令。
总结:Oracle数据库触发器可以根据不同的需要分为不同的类型,即DML触发器、DDL触发器和数据库触发器,它们分别应用于不同的表现形式,用于处理不同的数据库操作。