Oracle触发器类型探索(oracle触发器类型)

Oracle触发器(Triggers)是一种自动执行的在一个数据库中维护数据完整性、实施业务规则以及收集数据字典信息的数据库对象。它允许您定义在某些数据变化时,系统自动执行指定的动作。

Oracle触发器的功能有很多种,大致可以分为以下几类:

1. 行触发器(Row Triggers):触发器在表上的每个行上执行,比如插入、更新、删除操作都会触发行触发器。

例如:

CREATE OR REPLACE TRIGGER tr_emp_bi

BEFORE INSERT OR UPDATE ON emp

FOR EACH ROW

DECLARE

Begin

if :NEW.sal > 5000 then

:NEW.comm := :NEW.sal * 0.15;

else

:NEW.comm :=:NEW.sal * 0.10;

End If;

End;

/

又如:

CREATE OR REPLACE TRIGGER tr_emp_au

AFTER UPDATE ON emp

FOR EACH ROW

BEGIN

if :NEW.sal > 5000 then

:NEW.comm := :NEW.sal * 0.15;

else

:NEW.comm := :NEW.sal * 0.10;

End If;

End;

/

2. 表触发器(Table Triggers):这种触发器将表上所有操作视为一个单元,当对表上任何操作时,触发器就会被触发。

例如:

CREATE OR REPLACE TRIGGER tr_emp_bi

BEFORE INSERT OR UPDATE ON emp

DECLARE

BEGIN

UPDATE emp SET sal = sal * 1.2;

End;

/

又如:

CREATE OR REPLACE TRIGGER tr_emp_au

AFTER UPDATE ON emp

DECLARE

BEGIN

UPDATE emp SET sal = sal * 1.3;

End;

/

3. DDL触发器(DDL Triggers):这类触发器在数据库对象(如表、视图)被建立或删除时会被调用,可用来管理数据库物件或者实现安全性。

例如:

CREATE OR REPLACE TRIGGER tr_emp_ddl

AFTER DROP ON TABLE emp

DECLARE

BEGIN

INSERT INTO logs VALUES (‘table_emp is dropped!’);

End;

/

在Oracle数据库中,可在表、视图、序列等数据库对象上建立触发器,通过这种方式,可以把一些业务规则的执行任务交给数据库本身来完成,而不需要用户自己去编写应用程序,使得系统运行更加可靠,管理更加方便。


数据运维技术 » Oracle触发器类型探索(oracle触发器类型)