何谓自治事务

来源:互联网 发布:越南橡皮筋淘宝 编辑:程序博客网 时间:2024/06/15 19:13

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

1、顶层匿名块

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

3、对象类型的方法

4、数据库触发器

 

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

 

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

 

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

 

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

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

 

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

 

原创粉丝点击