zoukankan      html  css  js  c++  java
  • ORACLE 自治事物

    ORACLE 自治事物

    一、问题

         

    (1)现象

     

       一个表A,存在一个触发器,该触发器用来统计表A的数量,并将结果更新到B表。此时,java代码里面调用insert into select 语句,会发生ora-04091错误。

    (2)分析

        Java调用insert into A select from A语句,对于表A来说,同时查询和插入,这个时候,如果A有插入触发器,并统计A表的数量,就存在问题,因为有java事物和触发器事物两个事物存在,就会报错。这时,需要使用到自治事物。

    二、ORACLE自治事物

      除了以上问题,如果遇到这个问题:在执行当前一个由多个DML组成的transaction(事务),为每一步DML记录一些信息到跟踪表中,由于事务的原子性,这些跟踪信息的提交将决定于主事务的commitrollback. 这样一来写程序的难度就增大了程序员不得不把这些跟踪信息记录到类似数组的结构中,然后在主事务结束后把它们存入跟踪表。

      有无方法解决?同样是自治事物。

        AT 是由主事务(以下MT)调用但是独立于它的事务。在AT被调用执行时,MT被挂起,在AT内部,一系列的DML可以被执行并且commitrollback.

      注意由于AT的独立性,它的commitrollback并不影响MT的执行效果。在AT执行结束后,主事务获得控制权,又可以继续执行了。

     

    使用语法:

    Declare

    PRAGMAAUTONOMOUS_TRANSACTION;

    .....

    Commit;

  • 相关阅读:
    【面试题】面试题合集三
    【面试题】面试题合集二
    【面试易错题】陷阱题集一
    40个Java集合面试问题和答案
    java面试题全集(下)
    java面试题全集(中)
    java面试题全集(上)
    spring cloud基础教程
    spring boot基础学习教程
    DDD
  • 原文地址:https://www.cnblogs.com/ironyoda/p/6113272.html
Copyright © 2011-2022 走看看