精通Oracle触发器类型,掌握数据库能力(oracle触发器类型)
Oracle触发器,即数据库触发器,是实现特定条件时自动执行特定操作的特定程序对象。它们和存储过程类似,但比存储过程更加方便,适用于边缘性的应用场景。Oracle触发器分为表触发器,语句触发器和调度触发器等三种类型。
表触发器是Oracle触发器最常见的一种类型,主要是绑定到表上,由DML或DDL操作触发器。它在特定表上的插入、更新、删除或DDL语句触发后,触发触发器的执行。表触发器的语法如下:
CREATE [OR REPLACE] TRIGGER trigger_name
{BEFORE|AFTER|INSTEAD OF}
[INSERT|UPDATE|DELETE|TRUNCATE]
[OF col_name]
ON tbl_name
[REFERENCING OLD AS old NEW AS old]
[FOR EACH ROW [WHEN EXISTS|WHEN NOT EXISTS]] — Oracle 12C新特性
[FOLLWED BY] — Oracle12C新特性
BEGIN–statement
END;
语句触发器是Oracle触发器的另一种类型,主要是对整个数据库操作,而不是对特定表操作,可以触发一项任务,比较适合做一些全局性的限制性检查,比如用户登录时验证。语句触发器的语法如下:
CREATE [OR REPLACE] TRIGGER trigger_name
{BEFORE|AFTER}
[FOR EACH ROW [WHEN EXISTS|WHEN NOT EXISTS]] — Oracle 12C新特性
[FOLLWED BY] — Oracle12C新特性
[INSERT|UPDATE|DELETE|TRUNCATE]
ON table_name
BEGIN–statement
END;
调度触发器是Oracle触发器的另一种类型。这种触发器是基于Oracle内部调度计划机制而存在的,不会因为某一条特定数据库语句发生而被触发,而是每当特定的时间间隔发生时被触发,比如每个半小时或每天凌晨2点,可以让它执行定期的任务,比如每天清除日志表,或者每周分析表等。调度触发器的语法如下:
CREATE OR REPLACE TRIGGER trigger_name
AFTER START OF JOB {JOB | }
[FOR EACH ROW]
BEGIN
— statement
END;
通过了解以上三种类型的Oracle触发器,并熟练掌握这些触发器类型,来提高数据库操作的能力,我们可以用它们来实现一些自动化定期任务,比如定期清除表,禁止用户执行某些语句或者检查一些约束,来节省我们大量的管理工作。通过触发器的使用,也可以提高我们的数据库能力,从而提高我们开发和管理数据库的水平。