Oracle数据库中的触发器类型简介(oracle触发器类型)
Oracle数据库中的触发器是一种特殊的库对象,它使用在DML语句执行时指定要发生的动作。Oracle数据库中提供了多种触发器类型,各个类型有着不同的特征和应用场景,下面将对这些类型进行详细介绍。
1、行触发器
行触发器是开发人员最常用的类型,它定义的是对影响的行执行的动作,即对数据库表的更新操作,如插入或更新、删除时触发器被调用。下面是一个典型的行触发器的实现代码:
CREATE OR REPLACE TRIGGER emp_after_update
AFTER UPDATE ON emp_table
FOR EACH ROW
BEGIN
INSERT INTO emp_audit_table VALUES (:OLD.EMPID, :OLD.EMPNAME);
END;
/
2、状态触发器
状态触发器定义的是DML操作在一个会话级别内发生时运行的动作,在一次会话里会被调用一次,无论多少行被修改:
CREATE OR REPLACE TRIGGER emp_after_update_state
AFTER UPDATE ON emp_table
FOR EACH STATEMENT
BEGIN
INSERT INTO emp_audit_table VALUES (:OLD.EMPID, :OLD.EMPNAME);
END;
/
3、时间触发器
时间触发器指定了一个定时任务,它可以通过SQL语句来实现,当定时任务计划到达时触发器就会运行:
CREATE OR REPLACE TRIGGER emp_after_update_timer
AFTER UPDATE ON emp_table
FOR EACH TIMER ‘triger_timer’
WHEN 10:00 AM
BEGIN
INSERT INTO emp_audit_table VALUES (:OLD.EMPID, :OLD.EMPNAME);
END;
/
4、计算触发器
计算触发器用于在DML语句和行变化完成后执行,它允许用户指定在某一特定的定义型表数据发生变化时执行一些操作:
CREATE OR REPLACE TRIGGER emp_check_stat
BEFORE UPDATE OF emp_stat ON emp_table
REFERENCING OLD TABLE AS old_emp
FOR EACH ROW
WHEN (old_emp.Emp_stat = ‘OLD’)
BEGIN
INSERT INTO emp_audit_table VALUES (:OLD.EMPID, :OLD.EMPNAME);
END;
/
以上就是Oracle数据库中常用的四种触发器类型介绍,每一种触发器类型都有自身的应用场景,开发人员需要根据自己的操作需求灵活运用。