今天碰到了一个奇怪的问题,是关于Oracle一个事务中的Insert和Update语句的执行顺序的问题。

首先详细说明下整个过程:

有三张表:A,B,C,Java代码中有一段代码是先在表A中插入一条数据,然后再更新表B的两个字段,更新的两个字段是特定值。并且插入和更新在一个事务中。

有个需求需要在表A添加一个Insert的行级触发器,在触发器里,插入表A一行记录后去表B查看更新的两个字段是否满足特定条件,

如果表B的两个字段同时等于特定值,则把表A和表B的数据整合下放到表C。触发器的初衷就是这样。

可问题来了,测试触发器的时候,发现表B的两个字段总不能满足条件。查询下表B,发现表B的两个字段已经更新,并且两个都是特定值。新建测试窗口,插入表A一条测试记录,能在表C插入整合后的数据。

初步推断可能是在事务中,Insert语句先执行了,先触发了触发器,然后才进行表B的两个字段的更新。

所以就修改了Java代码事务中Insert语句和Update语句执行顺序,把Update语句放到Insert语句之前,结果还是一样,不能在表C插入整合后的数据。

后来在表B上面创建了一个Update触发器,禁用表A的Insert触发器,测试表B的Update触发器是发现当更新的两个字段满足特定条件后,去表A能查询到新插入的数据,能把整合后的数据插入到表C。

得出最终不成熟的结论:Oracle一个事务中,Insert语句比Update先执行。

Oracle一个事务中的Insert和Update执行顺序的更多相关文章

  1. 错误处理之try、catch、finally中的return、throw执行顺序。

    今天遇到一个让人无语的代码块 try { bilSheetService.syncUser(bilWebseviceLog, userId, optType); }catch (Exception e ...

  2. java中子类继承父类程序执行顺序

    java中子类继承父类程序执行顺序 FatherTest.java public class FatherTest { private String name; public FatherTest() ...

  3. jquery ajax中success与complete的执行顺序

    jquery ajax中success与complete的执行顺序 jquery中各个事件执行顺序如下: 1.ajaxStart(全局事件) 2.beforeSend 3.ajaxSend(全局事件) ...

  4. Oracle merge into 语句进行insert或者update操作,如果存在就update,如果不存在就insert

    merge into的形式:    MERGE INTO [target-table] A USING [source-table sql] B ON([conditional expression] ...

  5. Oracle中Select语句完整的执行顺序

    oracle Select语句完整的执行顺序: .from 子句组装来自不同数据源的数据: .where 子句基于指定的条件对记录行进行筛选: .group by子句将数据划分为多个分组: .使用聚集 ...

  6. SqlServer中Sql语句的逻辑执行顺序

    准备数据 Sql脚本如下,两张表,一张客户表Customers只包含customerid和city字段,一张订单表Orders包含orderid和customerid(关联Customers的cust ...

  7. django中的中间件机制和执行顺序

    这片文章将讨论下面内容: 1.什么是middleware 2.什么时候使用middleware 3.我们写middleware必须要记住的东西 4.写一些middlewares来理解中间件的工作过程和 ...

  8. Unity 脚本中的主要函数的 执行顺序及其介绍

    Awake ->OnEable-> Start -> FixedUpdate-> Update  -> LateUpdate ->OnGUI ->OnDisa ...

  9. java中return与finally的执行顺序

    可不能小看这个简单的 finally,看似简单的问题背后,却隐藏了无数的玄机.接下来我就带您一步一步的揭开这个 finally 的神秘面纱. 问题分析 首先来问大家一个问题:finally 语句块一定 ...

随机推荐

  1. 视频软件TurboDemo 教程:如何为视频添加旁白和音乐

    在前面的文章中,已经对视频软件TurboDemo如何快速的捕捉屏幕和视频编辑做了一些了解,本文主要来了解如何为视频添加旁白和音乐. Slide Timing 在Player Controls窗口中的单 ...

  2. Monkey的ADB命令简单使用示例和解析

    进行简单的压力测试: 1. adb shell monkey –p 包名 –v-v 3000 >E:\bugLog.txt -v -v 标识打印的日志的详细级别为2级,更高级有3级,也可以用1级 ...

  3. php常用string函数

    http://www.w3school.com.cn/php/php_ref_string.asp1.addcslashes() 返回在指定的字符前添加反斜杠的字符串2.addslashes() 返回 ...

  4. Linux下运行Jmeter测试所遇问题汇总

    一.安装及启动Jmeter  本文原创,专为光荣之路公众号所有,欢迎转发,但转发请务必写出处!  0.下载及安装 下载地址及Linux命令 wget http://mirrors.cnnic.cn/a ...

  5. centos7配置静态ip后仍然显示动态ip

    我在虚拟机上安装了CentOS7操作系统,将 /etc/sysconfig/network-scripts/ifcfg-eth0 文件配置静态 IP 为192.168.1.210,如图1: 然后我用 ...

  6. Write Your software base on plugin(C/C++ ABI)

    一个软件,如果把所有的功能写进C++源码,维护,扩展,编译都特别麻烦. 共享库后缀名.Linux -> .so  Windows -> .dll 关于动态符号显示问题,具体可以看系统的AP ...

  7. (更新)Java + 腾讯企业邮箱 + javamail + SSL 发送邮件

    咳咳~最头疼的就是莫名其妙的错误. 本来今年6月份运行通过的代码,过俩月就报错了. javax.mail.MessagingException: Could not connect to SMTP h ...

  8. Centos7搭建需要mysql的网站

    1.在centos7上安装好http.php.php-mysql服务 php-mysql是用来链接的工具 2.在centos5上yum安装mysql 注意在搭建本地yum源时把校验关闭,不然安装不上 ...

  9. MongoDB由于目标计算机积极拒绝,无法连接

    遇到这个问题的时候,可以通过以下步骤解决: 1.打开Mongo安装包:进入Mongo下的data文件夹下的db文件夹,找到Mongod.lock,删除. 2.在命令行中输入: mongod.exe - ...

  10. The Same Game-POJ1027模拟

    The Same Game Time Limit: 1000MS Memory Limit: 10000K Description The game named "Same" is ...