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中的触发器可以控制表或视图中的数据操作,非常方便,可以帮助开发者更有效地管理数据库。


数据运维技术 » Oracle数据库中的触发器类型简介(oracle触发器类型)