博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ORACLE 自治事物
阅读量:5334 次
发布时间:2019-06-15

本文共 695 字,大约阅读时间需要 2 分钟。

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;

 

转载于:https://www.cnblogs.com/ironyoda/p/6113272.html

你可能感兴趣的文章
python基本数据类型
查看>>
JAVA web 中文传参乱码解决方案:(最简洁方案)
查看>>
iOS 下载功能(断点续传)
查看>>
delphi中midas是什么
查看>>
AppSettings和ConnectionStrings的区别
查看>>
hdu1403 Longest Common Substring
查看>>
1305: [CQOI2009]dance跳舞 - BZOJ
查看>>
Redis数据库No-SQL的介绍安装和使用
查看>>
Graphics绘图闪烁的问题
查看>>
移动Web开发之- 移动化用户体验设计
查看>>
关于TDD的思考
查看>>
Cocos2d-x学习之windows 7 android环境搭建
查看>>
python帮助文档查看
查看>>
将html代码中的大写标签转换成小写标签
查看>>
jmeter多线程组间的参数传递
查看>>
在C#代码中应用Log4Net(二)典型的使用方式(转)
查看>>
实体映射基础
查看>>
零散笔记
查看>>
《那些年啊,那些事——一个程序员的奋斗史》——57
查看>>
VGA管脚定义
查看>>