何谓自治事务

自治事务(autonomous transaction)允许你创建一个“事务中的事务”,它能独立于其父事务提交或回滚。利用自治事务,可以挂起当前执行的事务,开始一个新的事务,完成一些工作,然后提交或回滚,所有这些都不影响当前所执行的事务的状态。自治事务提供了一种pl/sql控制事务的新方法,可以用于:

1、顶层匿名块

2、本地(过程中的过程)、独立或打包的函数和过程

3、对象类型的方法

4、数据库触发器

 

自治事务又是如何工作的呢?下面来看一个例子,让我们对自治事务有一个更好的了解。

 

首先创建两个过程,一个是autonomous_insert(自治事务),另一个是nonautonomous_insert(非自治事务)。还有一个测试表t。

 

下面来观察pl/sql代码匿名块中非自治事务的行为:

 

从结果中可以看到,匿名块中的insert工作由非自治事务中提交。两个数据行都已经提交,所以没有什么可以rollback的。

接下来看看自治事务的行为方式(主要要先把表t中的数据全部删除):

 

在此,只有自治事务本身中的的工作得到提交,而在匿名块中的insert工作会rollback掉。自治事务过程的commit对匿名块中开始的父事务没有影响。本质上讲,这就是自治事务的精髓,并能了解自治事务到底能干什么。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值