一 使用规则 : 在begin 之前申明  : PRAGMA AUTONOMOUS_TRANSACTION; 二 使用理解:autonomous transaction 是一个独立的事务,这一点是理解autonomous transaction 的关键,虽然受main transaction 的调用.下面用一个例子来加深理解. 创建一个测试表,往其中插入两条记录,不提交,接着声明一个自治事务,在其中继续 往表中插入记录,并且在自治事务对插入的记录进行提交.我们从输出中可以知道main trans…
自治事务 - autonomous transaction 在Oracle数据库中,有时候我们会希望记录一个过程或者函数的运行日志,不管正常运行结束还是触发异常结束,都要记录. 正常结束的没有问题,但是触发异常的情况下,一般的过程或者函数显然不能在插入运行日志之后直接Commit,因为触发异常后相关业务逻辑需要RollBack. 而自治事务就能够很好的避免了这样的问题,就是说自治事务是在某个会话中独立开启一个事务,在其中处理的操作不会影响到同一会话中其他事务未提交的内容. 下面开始举个例子说明一…
ORACLE 自治事物 一.问题 (1)现象   一个表A,存在一个触发器,该触发器用来统计表A的数量,并将结果更新到B表.此时,java代码里面调用insert into select 语句,会发生ora-04091错误. (2)分析 Java调用insert into A select from A语句,对于表A来说,同时查询和插入,这个时候,如果A有插入触发器,并统计A表的数量,就存在问题,因为有java事物和触发器事物两个事物存在,就会报错.这时,需要使用到自治事物. 二.ORACLE自…
AUTONOMOUS TRANSACTION(自治事务)的介绍 在基于低版本的ORACLE做一些项目的过程中,有时会遇到一些头疼的问题,比如想在执行当前一个由多个DML组成的transaction(事务)时,为每一步DML记录一些信息到跟踪表中,由于事务的原子性,这些跟踪信息的提交将决定于主事务的commit或rollback. 这样一来写程序的难度就增大了, 程序员不得不把这些跟踪信息记录到类似数组的结构中,然后在主事务结束后把它们存入跟踪表.哎,真是麻烦! 有没有一个简单的方法解决类似问题呢…
AUTONOMOUS TRANSACTION(自治事务)的介绍 在基于低版本的ORACLE做一些项目的过程中,有时会遇到一些头疼的问题,比如想在执行当前一个由多个DML组成的transaction(事务)时,为每一步DML记录一些信息到跟踪表中,由于事务的原子性,这些跟踪信息的提交将决定于主事务的commit或rollback. 这样一来写程序的难度就增大了, 程序员不得不把这些跟踪信息记录到类似数组的结构中,然后在主事务结束后把它们存入跟踪表.哎,真是麻烦! 有没有一个简单的方法解决类似问题呢…
http://blog.csdn.net/indexman/article/details/7799862 1.什么是Oracle自治事务 在官方文档中,是这样的定义的“Autonomous transactions are independent transactions that can be called from within another transaction.”就是说它被一个事务调用的事务,但它独立于它的父事务提交或回滚. 下面看一个例子 首先创建一张测试表 MIKE@ORA11…
定        义: Autonomous transactions are independent transactions that can be called from within another transaction. à被一个事务调用的事务,但它独立于它的父事务提交或回滚. 注意事项: 必须在匿名块的最高层或者存储过程.函数.数据包或触发的定义部分中,使用PL/SQL中的PRAGMA AUTONOMOUS_TRANSACTION语句必须Commit或Rollback自治事务,否则…
这段时间遇到一个问题,程序里明明插入了一条记录,但在后边的一段Procedure中却查不到刚刚插入的记录,最后发现这个Procedure的定义中加入了PRAGMA AUTONOMOUS_TRANSACTION. PRAGMA AUTONOMOUS_TRANSACTION中文翻译过来叫“自治事务”(翻译的还算好理解),对于定义成自治事务的Procedure,实际上相当于一段独立运行的程序段,这段程序不依赖于主程序,也不干涉主程序 自治事务的特点 第一,这段程序不依赖于原有Main程序,比如Main…
n  事物隔离级别 概念:隔离级别定义了事物与事物之间的隔离程度. ANSI/ISO SQL92标准定义了一些数据库操作的隔离级别(这是国际标准化组织定义的一个标准而已,不同的数据库在实现时有所不同): 隔离级别 脏读 不可重复读 幻读 读未提交(Read uncommitted) √ √ √ 读已提交(Read committed) × √ √ 可重复读(Repeatable read) × × √ 可串行化(Serializable) × × ×                       …
本文转自:http://yedward.net/?id=24 set transaction语句允许开始一个只读或者只写的事务,建立隔离级别或者是为当前的事务分配一个特定的回滚段.需要注意的是,set transaction必须是事务处理中的第一条语句,注意是事务处理的第一条语句,不是指代码的第一条语句,并且set transaction在一个事务中只能出现一次. set transaction的语法如下: SET TRANSACTION parameter; parameter是用来指定参数的…