深入解析Oracle数据库触发器类型(oracle触发器类型)
Oracle数据库触发器是指用于自动修改表数据的特殊存储程序,可以以不同的方式监控会话对特定表的INSERT,UPDATE,DELETE,ALTER和CREATE等操作的行为,从而实现数据的完整性。Oracle数据库触发器类型不止一种,本文将分别介绍Before触发器、Row触发器、Instead-of触发器。
BEFORE触发器
BEFORE触发器的书写形式为
create trigger 触发器名称
before INSERT or UPDATE or DELETE
on 表名
for each row
它可以在DML语句之前调用,监控表的插入、更新、删除等操作,当DML语句执行时,它会优先执行,根据返回值判断是否允许操作继续执行,例如:
CREATE OR REPLACE TRIGGER update_equipment
BEFORE INSERT or UPDATE ON EQUIPMENT
FOR EACH ROW
BEGIN
if :NEW.EQUIPMENT_NAME is NULL then
RAISE_APPLICATION_ERROR(-20202, 器材名不允许为空 );
END IF;
END;
这段代码会在新增/编辑EQUIPMENT表中的记录时,判断器材名是否为空,如果为空会抛出一个错误,就不会继续执行后续步骤,表记录也不会变更。
ROW触发器
ROW触发器也是用来监控表中插入、更新、删除等操作,但是它可以对每一行数据进行单独处理,书写格式为:
CREATE TRIGGER 触发器名称
AFTER INSERT or UPDATE or DELETE
ON 表名
REFERENCING NEW AS newrow
FOR EACH ROW
它可以在每个SQL语句执行后执行,也可访问被修改的行的属性,比如:
CREATE OR REPLACE TRIGGER add_cost
AFTER INSERT on EQUIPMENT
REFERENCING NEW AS newrow
FOR EACH ROW
BEGIN
UPDATE EQUIPMENT
SET COST = COST + newrow.EQ_COST
WHERE ID = newrow.EQUIPMENT_ID;
END;
上面的代码就是在向EQUIPMENT表插入一条记录时,对该条记录的cost字段进行更新操作。
INSTED-OF触发器
INSTED-OF触发器是一种特殊的触发器,它不监控表记录的变更,而是监控视图的变更,书写格式为:
CREATE TRIGGER 触发器名称
INSTEAD OF INSERT or UPDATE or DELETE
ON 视图名
FOR EACH ROW
可以用它修改或者删除视图里面的记录,例如:
CREATE OR REPLACE TRIGGER update_view
INSTEAD OF UPDATE ON EQUIPMENT_VIEW
FOR EACH ROW
BEGIN
UPDATE EQUIPMENT
SET EQUIPMENT_NAME = :NEW.EQUIPMENT_NAME
WHERE ID = :NEW.EQUIPMENT_ID;
END;
上面的代码是用INSTED-OF触发器监控EQUIPMENT_VIEW视图的更新操作,当EQUIPMENT_VIEW视图被更新时,触发器就会把该更新操作转移到EQUIPMENT表中进行更新操作。
总结
在实现数据库数据完整性方面,Oracle数据库触发器类型可以提供有效帮助。本文从Before触发器、Row触发器、Instead-of触发器三个方面介绍了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数据库创建:建库和建表的SQL语句(oracle建库建表语句)
- Oracle出库技术实现注册和出库的SQL语句(oracle出库实现语句)
- 轻松搞定DBCP配置Oracle数据库连接池(dbcp配置oracle)
- C操作Oracle数据库的引用实践(c# 引用 oracle)
- JavaScript连接Oracle数据库配置指南(js连接oracle配置)
- 如何在 Oracle 中掌握事务控制(oracle事务怎样控制)
- 如何在Oracle中有效去除重复行(oracle中去除重复行)
- Oracle数据库中的函数功能强大(oracle、数据库函数)
- Oracle数据库查询快速上手(oracle q s)