Oracle数据库触发器类型及其应用(oracle触发器类型)
Oracle数据库中的触发器(Trigger)是一种特殊的存储过程,它用户自动处理数据库某些动作时可以指定要执行的操作。触发器是为了满足数据库系统中复杂的业务,当表中指定列发生某些改变,数据库系统自动进行处理的存储过程。
Oracle数据库的触发器分为四类,如下所示:
1. BEFORE触发器 (BEFORE Trigger)
BEFORE触发器在满足条件时,允许在数据库操作之前,在一个特定的表中执行一个动作,它可以在拒绝操作发生之前进行检查或者纠正。例如:在数据插入时确保特定的列中的数据格式是正确的。
2. AFTER触发器(AFTER Trigger)
AFTER触发器允许在一个特定表完成数据库操作之后执行一个或多个动作。它可以检查或者修改一些表,还可以用来限制表,比如禁止建立重复索引,或者在字段满足一定条件时,更新一个不能修改的列。
3. INSTEAD OF触发器(INSTEAD OF Trigger)
INSTEAD OF触发器在视图上应用の前发生,它允许应用程序在无法更新原有表的情况下更新视图,它支持对虚拟表的操作,包括INSERT、UPDATE、DELETE。 例如:如果一个视图持有多个表,而其中某些表不允许更新,INSTEAD OF触发器就变得很有用,可以补齐视图所需的更新函数。
4. COMPOUND触发器(COMPOUND Trigger)
COMPOUND触发器是Oracle 11g引入的新的触发器,它支持BEFORE和AFTER触发器的同时触发,COMPOUND触发器可以实现兼容性,并可以支持更多的复杂的触发器情况。
Oracle的触发器能够非常方便的解析复杂的业务,从而大大简化业务的处理,极大的提升了工作效率。用法很简单,基本格式如下:
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)
BEGIN
操作语句
END;
实例:
CREATE OR REPLACE TRIGGER trig_deptno
BEFORE INSERT ON dept
FOR EACH ROW
BEGIN
IF :NEW.deptno IS NULL THEN
RAISE_APPLICATION_ERROR(-20001, 部门号不能为空! );
END IF;
END;
CHANGE
ALTER TRIGGER trig_deptno
BEFORE INSERT ON dept
FOR EACH ROW
BEGIN
IF :NEW.deptno
RAISE_APPLICATION_ERROR(-20002, 部门号应该大于0! );
END IF;
END;
Oracle 触发器在一些应用中可以大大地提高业务效率并解析各种业务场景,比如当特定字段信息发生改变时对相关联表做出回应,从而保障数据库中各表之间的一致性。
我想要获取技术服务或软件
服务范围:MySQL、ORACLE、SQLSERVER、MongoDB、PostgreSQL 、程序问题
服务方式:远程服务、电话支持、现场服务,沟通指定方式服务
技术标签:数据恢复、安装配置、数据迁移、集群容灾、异常处理、其它问题
本站部分文章参考或来源于网络,如有侵权请联系站长。
数据库远程运维 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如何更新)
- 如何在Oracle中更改用户表?(oracle更改用户表)
- Oracle 是否可以关闭事务(oracle关闭事务吗)
- 与数据处理Oracle中间表样式指导与数据处理研究(oracle中间表样式)
- Oracle数据库修改包体实战经验分享(oracle修改包体)
- 以Oracle 乐观锁实现数据库并发控制(oracle乐观锁实例)
- 重视Oracle数据库主键命名要求必须大写(oracle主键大写)
- 函数Oracle数据库下使用AVG函数的实践(oracle中查询avg)
- 原理探究Oracle数据库中动态链接库的运行原理(oracle中DLL)
- Oracle数据库中大型系统的应用(oracle下big系统)