掌握Oracle触发器的必要类型(oracle触发器类型)
Oracle触发器是系统提供的一种非常重要的编程构件,适用于执行自定义复杂的操作。它可以在特定条件下定期或完成数据变化后自动调用特定的存储函数,以执行特定的数据库命令,具有一定的功能和使用效果。Oracle触发器有如下3种主要类型:
1、 关系触发器(Row-Level Trigger):它在应用程序调用INSERT,UPDATE和DELETE命令的过程中触发,它只处理最后一次触发器活动所影响的单行数据。它的参数类型有:OLD和NEW,它能够得到刚被改动行中改动前后的数据,如:
CREATE OR REPLACE TRIGGER trigger_update_after
AFTER UPDATE OF salary
ON employees
BEGIN
IF :NEW.salary
INSERT INTO history_salaries
VALUES (:OLD.employee_id,
:OLD.salary,
:NEW.salary);
END IF;
END;
2、语句触发器(Statement-Level Trigger):它在应用程序调用INSERT,UPDATE和DELETE命令的过程中触发,它会处理这个触发器活动所影响的所有行。它的参数类型有:OLD 和NEW,它只能得到改动前后的所有行,如:
CREATE OR REPLACE TRIGGER trigger_delete
BEFORE DELETE
ON employees
BEGIN
INSERT INTO history_employees
(employee_id, salary, delete_flag)
SELECT employee_id, salary, ‘Y’
FROM deleted;
END;
3、系统触发器(System Trigger):它在应用程序或用户改变数据库结构(CREATE, ALTER, DROP 语句)的过程中触发,它没有OLD 和NEW 参数,如:
CREATE OR REPLACE TRIGGER trigger_before_upgrade
BEFORE STARTUP ON DATABASE
BEGIN
SYS.DBMS_SYS_SQL.EXECUTE_SQL(‘ALTER SESSION SET NLS_DATE_FORMAT=”dd-mm-yyyy”’);
END;
总之, Oracle触发器是一种非常有用的数据库技术,可以帮助用户快速处理数据库结构更新、记录保存和数据校验等问题。尽管不同的触发器有不同的参数和使用方式,但应用触发器都是节省开发时间和实现功能的有效途径。