Oracle数据库触发器类型及其应用(oracle触发器类型)
Oracle 数据库触发器是一种特殊的存储过程,其应用范围很广。基本上,Oracle 数据库触发器可以与表上的插入、更新和删除 操作关联。Oracle 数据库触发器可以用来在存储过程和应用程序之外执行操作,具有自动化表中的任务的能力。
Oracle 数据库触发器可以分为三种类型:行及记录触发器,表触发器和系统触发器。
行触发器是基于对表某行的具体操作触发的,包括对表中单行进行插入、修改或删除操作,当这些操作发生时,行触发器就会被触发。行触发器一般包含有两个块,一个用于INSERT和UPDATE操作;另一个用于DELETE操作,下面是一个行触发器的典型代码:
CREATE OR REPLACE TRIGGER employee_trg
BEFORE INSERT OR UPDATE OR DELETE ON employee
FOR EACH ROWDECLARE
BEGIN IF INSERTING THEN
-- Perform some action ELSIF UPDATING THEN
-- Perform some action ELSIF DELETING THEN
-- Perform some action END IF;
END employee_trg;
表触发器是不针对表里特定行的,它根据整个表上发生的插入、更新或删除操作被触发。表触发器仅有一个块,其中不包含条件判断,因为表触发器只有一个块,表触发器无法判断操作的对象,一般用于处理表上所有数据,下面是一个表触发器的代码:
CREATE OR REPLACE TRIGGER employee_table_trg
AFTER INSERT OR UPDATE OR DELETE ON employee
BEGIN -- Perform some action
END;
最后,我们还有系统触发器,系统触发器可以用来监视数据库的访问操作,其被触发的方式与其他两种触发器不太一样,它们可以根据数据库对象上的访问操作而被触发,典型的触发事件包括数据库启动、用户登录、表变更等。一个系统触发器的典型代码如下:
CREATE OR REPLACE TRIGGER logon_trg
AFTER LOGONBEGIN
-- Perform some actionEND;
从上诉不难发现,Oracle 数据库触发器的应用非常广泛,用户可以根据自己的需要来创建不同类型的触发器,以进行更加有效率的操作处理。比如,用户可以创建一个行触发器来自动计算并存储每次插入或更新记录时的记录总数,这样就可以避免大量的统计查询操作,提高查询效率。