掌握Oracle触发器的五种类型(oracle触发器类型)
Oracle触发器是由PL/SQL表达式或特定事件自动执行的库程序单元,依赖触发器的语句来联动实施某一特定的动作。它可以检测对某个表的INSERT、DELETE 或 UPDATE 操作,然后之前或之后基于这些操作来执行一系列定义好的动作。简而言之,Oracle 触发器就是一个在特定事件触发后执行特定代码块的存储过程。
在Oracle数据库中,总共有5种不同类型的触发器。他们是:
(1)行级触发器(Row Level Trigger):它最常见的应用是当数据表中某一行发生改变时,行级别的触发器将会被激发,并执行指定的代码,用以对表中变更进行管理。
例如:当表中任意列值变化时,包括在插入数据、更新数据或删除数据时,将触发触发器,从而执行触发器包含的PL/SQL代码块,例如:
CREATE OR REPLACE TRIGGER my_trg
AFTER INSERT OR UPDATE OR DELETE
ON employees for each row
BEGIN
IF updating THEN
UPDATE STATEMENTS
ELSIF inserting THEN
INSERT STATEMENTS
ELSIF deleting THEN
DELETE STATEMENTS
END IF;
END;
/
(2)语句级触发器(Statement Level Trigger):与行级触发器不同的是,这种类型的触发器会在整个SQL语句执行完成后才被激发,也就是用户发出了一个SQL语句后,更改了多少行记录,语句级触发器都会被激发。
例如:假设有一个employees数据表,在表中执行DELETE或UPDATE语句,将触发下面的语句级触发器:
CREATE OR REPLACE TRIGGER my_trg
AFTER DELETE OR UPDATE
ON employees
BEGIN
If Inserting then
INSERT STATEMENTS
ELSIF Deleting then
DELETE STATEMENTS
ELSIF Updating then
UPDATE STATEMENTS
END IF;
END;
/
(3)事件触发器(Event Trigger):它是Oracle Database 10g中引入的新特性,可以根据特定的表或用户定义的事件来触发触发器。例如,可以在一个固定时间点,或者在表上发生更新之后,触发一个事件,从而执行定义的动作。
例如:发生更新表employees之后,将触发下面的事件触发器:
CREATE OR REPLACE TRIGGER my_trg
AFTER UPDATING ON employees
BEGIN
STATEMENTS
END;
/
(4)系统触发器(System Trigger):它是一种特殊的触发器,它可以根据系统定义的或用户定义的事件对数据库操作进行监控和管理,这些事件可以是起点事件,也可以是某个 session的非起点事件。
例如:当起点事件 AFTER LOGON ON 发生在 DATA 库上时,将触发以下系统触发器:
CREATE OR REPLACE TRIGGER check_for_data
AFTER LOGON ON data
BEGIN
STATEMENTS
END;
/
(5)复合触发器(Compound Trigger):它有点像一个事件触发器,但是它可以定义4种不同的触发器分支,分别是:BEFORE 对象变化、AFTER 对象变化等。可以将不同类型的触发器(行级,语句级或者系统触发器)组合起来,以定义一种强大的复合触发器。
例如,通过以下语句可以创建一个复合触发器:
CREATE OR REPLACE TRIGGER my_trg
FOR INSERT OR UPDATE OR DELETE ON employees
COMPOUND TRIGGER
BEFORE STATEMENT TRIGGER
BEFORE STATEMENT IS
BEGIN
STATEMENTS
END BEFORE STATEMENT;
BEFORE EACH ROW TRIGGER
BEFORE EACH ROW IS
BEGIN
STATEMENTS
END BEFORE EACH ROW;
AFTER EACH ROW TRIGGER
AFTER EACH ROW IS
BEGIN
STATEMENTS
END AFTER EACH ROW;
AFTER
我想要获取技术服务或软件
服务范围:MySQL、ORACLE、SQLSERVER、MongoDB、PostgreSQL 、程序问题
服务方式:远程服务、电话支持、现场服务,沟通指定方式服务
技术标签:数据恢复、安装配置、数据迁移、集群容灾、异常处理、其它问题
本站部分文章参考或来源于网络,如有侵权请联系站长。
数据库远程运维 掌握Oracle触发器的五种类型(oracle触发器类型)
相关文章
- 掌握Oracle数据库API的神奇力量(oracle数据库api)
- 数据库连接Oracle数据库:简单连接方式(c连oracle)
- 掌握ORACLE数据类型,实现数据灵活管理(oracle数据类型)
- 深入了解Oracle触发器的类型(oracle触发器类型)
- Oracle触发器:不同类型的应用(oracle触发器类型)
- 探索Oracle数据库中触发器的类型(oracle触发器类型)
- 初探 Oracle 触发器不容忽视的类型(oracle触发器类型)
- Oracle数据库触发器类型简介(oracle触发器类型)
- 深入浅出 Oracle 触发器类型指南(oracle触发器类型)
- 深入理解Oracle中的触发器类型(oracle触发器类型)
- 深入理解Oracle的触发器类型(oracle触发器类型)
- 掌握Oracle数据库中对象的查询技巧(查询oracle对象)
- 深挖原因:Oracle表查询性能下降(oracle表查询慢)
- 深入浅出:理解Oracle触发器的类型(oracle触发器类型)
- 掌握Oracle认证考试的秘诀:25道精选试题推荐(oracle认证试题)
- Oracle高效运作:增加时间,提升业务处理速度(oracle增加时间)
- Oracle:求取生活长度的寻求(oracle 求长度)
- 掌握Oracle公有角色,提升数据库管理效率(oracle公有角色)
- 突破难关Oracle从基础知识到实践应用(oracle从基础到应用)
- 复杂的报表利用Oracle技术打造复杂的报表(oracle产生一个)
- Oracle事务深入理解其概念(oracle事物的概念)
- 维护大局的舵手Oracle代理商胡二龙(oracle代理商胡二龙)
- Oracle三大表的关联一种新的数据查询方式(oracle三大表关联)
- Oracle数据库SCN值为0的排查(oracle scn 0)