精通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触发器,并熟练掌握这些触发器类型,来提高数据库操作的能力,我们可以用它们来实现一些自动化定期任务,比如定期清除表,禁止用户执行某些语句或者检查一些约束,来节省我们大量的管理工作。通过触发器的使用,也可以提高我们的数据库能力,从而提高我们开发和管理数据库的水平。


数据运维技术 » 精通Oracle触发器类型,掌握数据库能力(oracle触发器类型)