Oracle自治事务读书笔记
来源:互联网 发布:希尔瓦娜斯 酋长 知乎 编辑:程序博客网 时间:2024/04/30 05:54
Oracle自治事务(Autonomous Transaction)将一个主事务分割成几个子事务,在执行完子事务以后再继续主事务。这里的关键是,子事务是独立于主事务的,子事务中的Rollback和Commit操作只会影响子事务中的DML操作;同样,主事务中的Rollback和Commit操作只会影响事务中的DML操作,而不会影响子事务中的操作。在子事务中已经commit的操作,不会被主事务中的rollback撤销。
制定PL/SQL程序块为自治事务可以通过在程序开头使用如下命令实现
PRAGMA AUTONOMOUS_TRANSACTION
定义自治事务必须遵循以下规则:
-
如果要被定义为自治事务的程序是匿名的,则它必须是一个最外层的程序块。
-
如果不是匿名的,则它必须是函数或者过程,或者是包含在一个中。在一个包中,只有其中的函数或过程能够定义成自治事务。整个包不能申明为自治事务。
-
一个对象的方法可以申明为自治事务
-
触发器可以申明为自治事务
-
内嵌程序块不能申明为自治事务
注意:对于一个匿名的自治事务程序块来说,只有这个块的begin和end之间的代码被看作是自治事务。考虑下面的例子
1 DECLARE
2 PRAGMA AUTONOMOUS_TRANSACTION;
3 FUNCTION dummy_log_error RETURN NUMBER;
4 v_num NUMBER(1) := 0;
5 retcd NUMBER := dummy_log_error;
6 FUNCTION dummy_log_error RETURN NUMBER
7 IS
8 BEGIN
9 INSERT INTO error_log VALUES ( -99,-99,'Dummy Error!',USER, SYSDATE);
10 RETURN (-99);
11 END;
12 BEGIN
13 INSERT INTO error_log VALUES (v_num, v_num, 'No Error!',USER, SYSDATE);
14 COMMIT;
15 END;
Oracle认为自治事务从12行开始,到15行结束。在执行上述代码之后,可以看到error_log表中存在上面代码插入的两条记录,但执行rollback之后,只剩下13行插入的记录,而函数dummy_log_error()插入的记录被回退掉了。这就证明了前面所说的关于自治事务范围的表述。
http://stanli.bokee.com/6132745.html- Oracle自治事务读书笔记
- Oracle的自治事务
- Oracle自治事务介绍
- ORACLE中的自治事务
- Oracle的自治事务
- Oracle-自治事务
- 了解oracle自治事务
- Oracle自治事务
- Oracle自治事务介绍
- Oracle自治事务
- Oracle自治事务
- oracle 自治事务
- oracle 自治事务
- 了解oracle自治事务
- oracle自治事务
- oracle自治事务
- oracle自治事务
- oracle自治事务(AT)
- WinCVS与CVSNT简明使用手则
- C语言文件操作函数
- 在csdn博客文章中加入google广告代码(adsense for content)
- 字符串读写函数fgets和fputs
- ARM 汇编指令条件执行详解
- Oracle自治事务读书笔记
- 找注册码
- 用Java实现断点续传(HTTP)
- 简单的数据库操作类
- 域名注册作业
- c,c++,MFC和dotNet的简单发展史
- 教学相长(二)
- Oracle的日期函数
- 俺身邊的“牛人”們