Oracle触发器是Oracle数据库用于在表准备提交、修改、删除数据后自动触发其他相关操作的一种常用类型的小程序。Oracle支持几种不同类型的触发器,可用于实现在数据库中的自动任务,协助开发人员实现更加高效的数据库管理。
掌握Oracle触发器的种类及用法非常重要,下面对Oracle触发器的种类及用法进行介绍:
一、Row triggers:
Row triggers(行触发器)是在每一行数据发生提交、修改、删除操作时触发的触发器,常用于数据发生变更时作相应处理,它可以用于实现自动跟踪表中条目的变更。
例如,在一个员工信息表中每当发生员工信息发生改变时需要同步更新审批表,这时可以为该表创建行触发器:
CREATE OR REPLACE TRIGGER 修改员工信息时同步修改审批表
AFTER UPDATE ON 员工信息
FOR EACH ROW BEGIN
UPDATE 审批表 SET 员工工号 =:NEW.员工工号,
员工姓名=:NEW.员工姓名,
所属部门=:NEW.所属部门
WHERE 员工工号 = :OLD.员工工号;
END;
二、Statement triggers:
Statement triggers(句柄触发器)是在用户向表发送一条提交、修改、删除语句时触发的触发器,此类触发器只会被触发一次,所以用于实现记录表中提交记录次数等较为特殊的操作。
例如,当用户对员工信息表发出提交、修改、删除操作时需要将操作信息写入日志表,这时可以为该表创建句柄触发器:
CREATE OR REPLACE TRIGGER 记录表操作日志信息
AFTER UPDATE OR DELETE OR INSERT ON 员工信息
BEGIN
INSERT INTO 表操作日志 VALUES( :OLD.员工号,’UPDATE’ );
END;
三、System triggers:
System triggers(系统触发器)是在数据库级别发生提交、修改、删除操作时触发的触发器,此类触发器可以实现数据库级别的自动任务,用于在数据库启动,登出或者关闭等系统操作时记录表操作日志。
例如,当用户登出时需要记录表操作日志,这时可以为该表创建系统触发器:
CREATE OR REPLACE TRIGGER 登录登出日志
AFTER LOGOFF ON DATABASE
BEGIN
INSERT INTO 登录日志 VALUES( USER , SYSDATE);
END;
综上所述,Oracle数据库内置几种不同类型的触发器,开发人员可以在不同的场景中使用不同类型的触发器来完成相应的自动任务,从而提高数据库管理的效率。