深入了解Oracle触发器的种类(oracle触发器类型)
Oracle触发器是Oracle数据库开发人员在数据库应用程序和系统动态监控时需要掌握的重要知识之一。所谓Oracle触发器(Trigger),就是当用户对表执行某种操作(如插入、更新或者删除操作)以后,数据库会自动地执行一个或多个操作,这种自动被激发执行操作的机制称为触发器。Oracle触发器可以在用户修改数据库内任何表时,自动执行自己的函数,通过这种自动的机制类比起人的眼睛,当触发条件出现时,用编程的方式实现了对表和数据的控制。
Oracle触发器可以分为三种类型:行触发器、语句触发器和系统触发器。
(1)行触发器:行触发器由表调用,是RDBMS中提供的一种建立在表级别上的宏观触发器,它能够被触发执行由DBA定义的代码,当受影响的行中对数据进行了某种操作(如插入、更新、删除等)之后,该触发器才被触发。语法格式如下:
CREATE [OR REPLACE] TRIGGER trigger_name
{BEFORE|AFTER|INSTEAD OF}
{INSERT [OR] | UPDATE [OR] | DELETE}
[OF col_name]
ON table_name
[REFERENCING OLD AS o NEW AS n]
[FOR EACH ROW]
[WHEN (condition)]
DECLARE
— declarations
BEGIN
— trigger code
END;
(2)语句触发器:语句触发器由语句调用,它是对特定的SQL语句在被执行前或执行后所做的准备,主要监控应用访问数据库。
例如:
CREATE [OR REPLACE] TRIGGER trigger_name
{BEFORE | AFTER}
{INSERT [OR] | UPDATE [OR] | DELETE}
ON table_name
[REFERENCING OLD AS o NEW AS n]
[FOR EACH ROW]
[WHEN (condition)]
BEGIN
— trigger code
END;
(3)系统触发器:系统触发器是与特定的数据库有关的,它是针对数据库事件的应用,系统触发器使用特殊的CREATE TRIGGER语法来创建,例如:
CREATE [OR REPLACE] TRIGGER trigger_name
{BEFORE | AFTER}
LOGON
ON database
BEGIN
— trigger code
END;
触发器允许数据库开发人员在数据库模式中定义宏观层面的操作,并有利于保持更新和完整性,从而达到更好的性能和可靠性。 Oracle触发器的种类是三种:行触发器、语句触发器和系统触发器。