定义
Oracle触发器是一种特殊的存储过程,它能够在给定的时间点自动执行,它们和存储过程之间的主要区别是,存储过程需要显式调用才能执行,而触发器不需要。触发器可以根据系统事件或在更新表时自动发生动作。
分类
触发器分为四类:表级触发器、行级触发器、组合触发器和BEFORE/AFTER触发器。
1)表级触发器:表级触发器会在DML操作(增、删、改)的前后执行定义的数据库函数或存储过程。
2)行级触发器:行级触发器会根据每一行的更新或插入情况,执行定义好的数据库函数或存储过程。
3)组合触发器:组合级触发器是一个触发器包含多个表级和行级触发器,所以它能够支持复杂的增删改操作。
4)BEFORE/AFTER触发器:BEFORE/AFTER触发器可以指定触发器在某一DML操作发生后或者开始前触发,可以在SQL语句执行前对其中的变量值作出一定的限制或修改。
功能
触发器的功能有:(1)实现动态表;(2)检查数据完整性;(3)保护表中的数据;(4)监控表数据的变化。
Oracle触发器既能满足数据库应用程序的功能要求,同时也能保证事务的完整性,提高数据库的稳定性和可靠性。它通过实施增删改的约束,可以保护表中的数据,实现数据库应用程序的数据完整性,改进数据库性能。
例子
例如,下面的触发器代码也可以用来实施动态表,无论用户在表中插入或更新数据,它都会从消息日志记录进行提示:
CREATE TRIGGER dynamic_table
BEFORE INSERT OR UPDATE ON table1
FOR EACH ROW
BEGIN
INSERT INTO messages
VALUES (‘Table modified’);
END;
总结
Oracle触发器是一种自动执行的存储过程,其能根据或在系统事件或更新表时自动发生动作。它有四类:表级触发器、行级触发器、组合触发器和BEFORE/AFTER触发器,它的功能有:实现动态表、检查数据完整性、保护表中的数据、监控表数据的变化,它能满足数据库应用程序的功能要求,同时也能保证事务的完整性,提高数据库的稳定性和可靠性。