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

Oracle触发器是一种特殊的程序,它基于表和视图的操作自动执行。它可以在表后台强制执行一个或多个SQL语句或PL/SQL数据库块,以增强应用程序的功能。触发器的特点是,它可以在每次修改表视图数据时自动执行,即时无需程序员的参与就可以满足用户的需求。Oracle触发器的类型主要有以下几种。

1.行级触发器:它可以在数据库表中每次发生 INSERT、UPDATE、DELETE 操作时触发。比如:假定要在表EMPLOYEE中插入一行新数据时,把这一行数据添加到另一个表中,可以创建一个行级触发器:

CREATE OR REPLACE TRIGGER Trg_EMP_Ins

AFTER INSERT ON EMPLOYEE

FOR EACH ROW

BEGIN

INSERT INTO ANOTHER_TABLE

SELECT * FROM EMPLOYEE

WHERE EMPLOYEE.E_ID = :NEW.E_ID;

END;

2.表级触发器:它可以针对整张表作用,它会在整张表中批量插入、修改或删除数据时执行。比如:在表EMPLOYEE中把所有薪水相加,可以创建表级触发器:

CREATE OR REPLACE TRIGGER Trg_Sum_EMP

AFTER INSERT OR UPDATE OR DELETE

ON SALARY

FOR EACH STATEMENT

DECLARE

SUM NUMBER (8,2);

BEGIN

SELECT SUM (SALARY) INTO SUM FROM EMPLOYEE;

END;

3.维护性触发器:这个触发器可以应用在Oracle中的索引、视图或约束上,它可以在修改这些对象时被触发,以动态的更新索引、视图或约束。比如:在表EMPLOYEE中修改约束时,可以创建维护性触发器:

CREATE OR REPLACE TRIGGER Trg_emp_alter

AFTER ALTER ON EMPLOYEE

BEGIN

EXECUTE IMMEDIATE “ALTER TABLE EMP_TABLE ADD(AGE NUMBER (2))”;

END;

4. 综合触发器:综合触发器在表或视图上定义,可以应用在某种情况下多种DML操作。它可以让你在一次操作之后执行多个操作,而不是在多次操作之后执行单个操作。比如:要在表EMPLOYEE中更新数据,同时在另一个表中插入一条数据,可以创建一个综合触发器:

CREATE OR REPLACE TRIGGER Trg_emp_update

AFTER INSERT OR UPDATE OR DELETE

ON EMPLOYEE

FOR EACH ROW

BEGIN

UPDATE ANOTHER_TABLE

SET FIELD1 = :NEW.FIELD1,

FIELD2 = :NEW.FIELD2;

INSERT INTO ANOTHER_TABLE

SELECT * FROM EMPLOYEE

WHERE EMPLOYEE.E_ID = :NEW.E_ID;

END;

除了上述的以上几种类型,Oracle还提供了其他几种触发器,比如系统触发器之类。Oracle 的触发器功能可以极大提高程序的可维护性,只需根据应用程序的具体需要,灵活使用即可。


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