Oracle数据库中的触发器类型简介(oracle触发器类型)
Oracle 数据库中包含多种类型的触发器,可用于执行操作。本文就主要介绍Oracle数据库中的触发器,包括其作用、特点和几种常用的触发器类型。
什么是触发器? 捷发器是一段程序代码,用于在指定的数据库管理系统(DBMS)环境下自动执行某种操作。它通常在特定的数据库或数据表操作发生之后,或在特定的事件发生之后执行。
触发器可以控制数据库对象操作,即控制某种操作被执行的条件。触发器可以检查、筛选、更新以及调用其他数据库对象。触发器可以主动的发送邮件和短信通知给相关用户。因此,触发器可以用来执行组合逻辑,可以检查并根据多个条件判断后执行。
Oracle 数据库的触发器类型主要有:行触发器、表级触发器、应用触发器和登录触发器。
(1)行触发器由某行操作引发,即使用insert、update 或 delete语句操作某行时触发。它也可以在表或视图上定义并且每次只执行一次,也可以在许多表持有者上定义,比如在某个表中定义一个触发器,以便每次有新行插入表或现有行更新或删除时随之执行的代码
例如:
CREATE OR REPLACE TRIGGER tr_ppl_name
BEFORE INSERT ON PPL
FOR EACH ROW
BEGIN
:new.name := LOWER(:new.name);
END;
(2)表级触发器顾名思义,是由操作表触发的,在进行insert、update或delete几种操作整张表时触发。它也可以应用到某个表上,比如在某张表上定义一个删除触发器,以便每次删除表中一行记录时,都需要更新另一张表。
例如:
CREATE OR REPLACE TRIGGER tr_ppl
BEFORE DELETE ON ppl
FOR EACH ROW
BEGIN
DELETE FROM pped WHERE pplid = :old.pplid;
END;
(3)应用触发器,特指由应用程序触发的,一般是在调用存储过程或函数时触发。该触发器调用存储过程或函数实现数据库操作,也可以用来执行一段定义好的复杂sql 语句,还可对提交请求进行检查和过滤,以允许执行某个动作必须满足特定的条件。
例如:
CREATE OR REPLACE TRIGGER tr_call
AFTER CALL ON SCHEMA
BEGIN
INSERT INTO logtable (logtext)
VALUES (‘Log SQL procedure call’);
END;
(4)登录触发器由用户登录到数据库触发,比如在某个用户登录时需要运行一段sql脚本,或是让某些非活动的用户登出,该让登录触发器能够完成此任务。
例如:
CREATE OR REPLACE TRIGGER tr_login
BEFORE LOGON ON SCHEMA
BEGIN
IF SYSDATE > session_date THEN
RAISE_APPLICATION_ERROR(-20000,’ECXEEDED DATE’);
END IF;
END;
以上就是 Oracle 数据库中多种触发器的简介,Oracle中的触发器可以控制表或视图中的数据操作,非常方便,可以帮助开发者更有效地管理数据库。