ORACLE触发器判断是否更新了某个字段

        今天遇到一个有意思的小问题,一同事有这样一个需求:在更新表T时,如果只是更新字段C,那么不希望触发该该表的触发器去处理业务逻辑。即想在触发器中做
出判断:如果更新了字段C,那么跳出触发器,不处理业务逻辑,如果是更新其它字段,那么让触发器去处理业务逻辑。
他是这样做的

   

   1: if :NEW.C != :OLD.C then
   2:      return;
   3: end if;

但是这样有一个问题:更新不一定值有变化.当更新的值有变化时,它很好的实现了业务逻辑,但是如果更新的值没有变化,那么这段代码就会失效了。

其实这个只需要使用条件谓词 DELETING即可解决,当触发事件是UPDATE时,如果修改了COLUMN_X时,则UPDATING(COLUMN_X)则为TRUE,否则为FALSE,所以上面代码改为下面代码即可实现其业务需求:

   1: if updating('C') then
   2:    return;
   3: end if;
时间: 2024-12-05 09:04:31

ORACLE触发器判断是否更新了某个字段的相关文章

关于在oracle数据库中用rownum更新字段的值

问题描述 关于在oracle数据库中用rownum更新字段的值 我想通过条件查询,将数据库中的记录排序选择出来,然后根据排序的rownum,将每条记录中的某个字段更新成rownum的值,这样做可以吗?如果可以请问该如何实现? 解决方案 好像是不可以的..... 解决方案二: http://www.2cto.com/database/201302/191874.html 解决方案三: 好像是不可以的.....

oracle触发器定时执行

问题描述 oracle触发器定时执行 请高手帮忙写一个触发器,当表中插入数据时,一段时间后(3分钟或者5分钟)自动 修改表中最新数据(有插入时间字段)的某个字段为false或者为1: 解决方案 等我回实验室,现在在上课 解决方案二: 在Oracle的触发器中执行DDL语句oracle 一个表上的多个触发器的执行顺序 解决方案三: 触发器是针对表格中有数据新增修改和删除时触发的程序,那只是一瞬间的事情,oracle有一个dbms_lock.sleep(10);休眠功能, 但是如果一次性新增了100

Oracle触发器用法实例详解_oracle

本文实例讲述了Oracle触发器用法.分享给大家供大家参考,具体如下: 一.触发器简介 触发器的定义就是说某个条件成立的时候,触发器里面所定义的语句就会被自动的执行.因此触发器不需要人为的去调用,也不能调用.然后,触发器的触发条件其实在你定义的时候就已经设定好了.这里面需要说明一下,触发器可以分为语句级触发器和行级触发器.详细的介绍可以参考网上的资料,简单的说就是语句级的触发器可以在某些语句执行前或执行后被触发.而行级触发器则是在定义的了触发的表中的行数据改变时就会被触发一次. 具体举例: 1.

oracle 触发器 实现出入库_oracle

用语言实现 好处: 1.可以减少对数据库的访问. 2.可移植性好. 坏处: 1.操作起来考虑的东西较多,修改一处就要修改别一处.也就是说是相互关联的.如果少改了某一处,很可能使数据不一致. 用触发器实现 好处: 1.可以使程序员从复杂的相互关联中解放出来,把精力放在复杂的业务上. 坏处: 1.可移植性差. 下面我就用一个例子实现一个简单的出入库.因为是例子表中所用到的字段很少.这里的例子只做为抛砖引玉. 数据表为入库金额表(以下简称入库表)income,出库金额表(以下简称出库表)outlay,

Oracle触发器简单实现

[oracle]触发器简单实现   目标:实现实时备份uertest表数据至usertest_temp中,两表结构一致 解决:用oracle触发器实现同步   结果:   1.建表   ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 [sql] -- 简单的用户表  create table USERTEST  (    NAME     VARCHAR2(20) not null,    AGE      NUMBER,    ISDELETE VARCHAR2(4

oracle-新人求教ORACLE 触发器的问题

问题描述 新人求教ORACLE 触发器的问题 表1为映射表,存在A1和B1两个字段,要求在表2插入数据时,数据中的A2(A2=A1)根据表1变为对应的b1,这个触发器改如何写 解决方案 在表2的触发器里写,写一个before触发器 select B1 into :new.A2 from 表1 where A1 = :new.A2; 即可

ORACLE学习笔记-添加更新数据函数篇_oracle

一.添加数据 /*添加数据*/ insert into STU values('stu0004','赵一',18,1,"kc0004"); insert into STU(STU_ID,STU_NAME,STU_AGE,STU_SET ) values('stu0013','储十一',19,1); 说明:如果不指定将数据添加到那个字段,那么此时必须列出全部数据,如果列出字段,则一一对应,必须列出约束不为空的所有字段,否则报错. 二.更新数据 /*更新数据*/ update STU SE

Oracle触发器trigger详解_oracle

触发器相关概念及语法 概述 本篇博文中主要探讨以下内容: 什么是触发器 触发器的应用场景 触发器的语法 触发器的类型 案例 数据: 触发器的概念和第一个触发器 数据库触发器是一个与表相关联的,存储的PL/SQL 语句. 每当一个特定的数据操作语句(insert update delete)在指定的表上发出时,Oracle自动执行触发器中定义的语句序列. 举个简单的例子: 当员工表中新增一条记录后,自动打印"成功插入新员工" create or replace trigger inser

mysql-MYSQL更新求解,字段值等于上一条字段值加上现有字段值

问题描述 MYSQL更新求解,字段值等于上一条字段值加上现有字段值 one等于上一个one加上现在的money,这个mysql语句怎么写哇? 解决方案 http://zhidao.baidu.com/link?url=wBFSSnHcTVhbNYHd_8WfIhIbFn4QA9s9SnOEVQfo3c2yCyRn6iXiIQW_BMlsmeaylw7xAqBgVIrMpdDLcPk5X_