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触发器和数据库触发器,它们分别应用于不同的表现形式,用于处理不同的数据库操作。


数据运维技术 » Oracle数据库的触发器类型详解(oracle触发器类型)