自治事务
看看在oracle中一个事务调用另外一个事务的情况:
事务A:
Begin
DML;
事务B
End;
事务B:
Begin
Commit;
End;
事务A对事务B中的操作可见,如果在事务B充commit,会将事务A中的DML也commit掉,自治事务就是来解决这样的问题的,使得事务B中的提交或回滚对A不可见。
使用一个例子来对比一下自治事务和普通的事务的不同:
SQL> create or replace procedure pro_test_tran is
2 begin
3 commit;
4 end;
5 /
Procedure created
使用pragma autonomous_transaction;来标识使用自治事务
SQL>
SQL> create or replace procedure pro_test_auto is
2 pragma autonomous_transaction;
3 begin
4 commit;
5 end;
6 /
Procedure created
SQL> select a.sal from scott.emp a where a.empno = 7369;
SAL
------------
812.60
SQL> begin
2 update scott.emp a set a.sal = a.sal + .01 where a.empno = 7369;
3 pro_test_auto;
4 rollback;
5 end;
6 /
PL/SQL procedure successfully completed
调用了pro_test_auto以后并没有将父事务中的dml提交掉:
SQL> select a.sal from scott.emp a where a.empno = 7369;
SAL
------------
812.60
SQL>
SQL> begin
2 update scott.emp a set a.sal = a.sal + .01 where a.empno = 7369;
3 pro_test_tran;
4 rollback;
5 end;
6 /
PL/SQL procedure successfully completed
调用了pro_test_ tran将父事务中的dml提交掉了:
SQL> select a.sal from scott.emp a where a.empno = 7369;
SAL
------------
812.61
分享到:
相关推荐
它允许SQL的数据操纵语言和查询语句包含在块结构(block_structured)和代码过程语言中,使PL/SQL成为一个功能强大的事务处理语言。在甲骨文数据库管理方面,PL/SQL是对结构化查询语言(SQL)的过程语言扩展。PL/SQL的...
它允许SQL的数据操纵语言和查询语句包含在块结构(block_structured)和代码过程语言中,使PL/SQL成为一个功能强大的事务处理语言。在甲骨文数据库管理方面,PL/SQL是对结构化查询语言(SQL)的过程语言扩展。PL/SQL的...
它允许SQL的数据操纵语言和查询语句包含在块结构(block_structured)和代码过程语言中,使PL/SQL成为一个功能强大的事务处理语言。在甲骨文数据库管理方面,PL/SQL是对结构化查询语言(SQL)的过程语言扩展。PL/SQL的...
PL/SQL是一种高性能的基于事务处理的语言,能运行在任何ORACLE环境中,支持所有数据处理命令。通过使用PL/SQL程序单元处理SQL的数据定义和数据控制元素。 PL/SQL支持所有SQL数据类型和所有SQL函数,同时支持所有...
6.2 结果表格处理..................................................36 6.3 实例模式查询..................................................40 6.4 连接查询.....................................................
它允许SQL的数据操纵语言和查询语句包含在块结构(block_structured)和代码过程语言中,使PL/SQL成为一个功能强大的事务处理语言。在甲骨文数据库管理方面,PL/SQL是对结构化查询语言(SQL)的过程语言扩展。PL/SQL的...
它允许SQL的数据操纵语言和查询语句包含在块结构(block_structured)和代码过程语言中,使PL/SQL成为一个功能强大的事务处理语言。在甲骨文数据库管理方面,PL/SQL是对结构化查询语言(SQL)的过程语言扩展。PL/SQL的...
它允许SQL的数据操纵语言和查询语句包含在块结构(block_structured)和代码过程语言中,使PL/SQL成为一个功能强大的事务处理语言。在甲骨文数据库管理方面,PL/SQL是对结构化查询语言(SQL)的过程语言扩展。PL/SQL的...
14. 窗口、数据库会话和事务 ..........104 14.1 会话模式 ........104 14.2 运行于多路会话或双路会话模式 104 15. 浏览对象.....105 15.1 使用浏览器 ......105 15.2 浏览器过滤器 ....110 15.3 浏览器文件夹 .......
它允许SQL的数据操纵语言和查询语句包含在块结构(block_structured)和代码过程语言中,使PL/SQL成为一个功能强大的事务处理语言。在甲骨文数据库管理方面,PL/SQL是对结构化查询语言(SQL)的过程语言扩展。PL/SQL的...
PL/SQL是一种高性能的基于事务处理的语言,能运行在任何ORACLE环境中,支持所有数据处理命令。通过使用PL/SQL程序单元处理SQL的数据定义和数据控制元素。 . PL/SQL支持所有SQL数据类型和所有SQL函数,同时支持...
6.2 结果表格处理..................................................36 6.3 实例模式查询..................................................40 6.4 连接查询.....................................................
6.2结果表格处理 6.3实例模式查询 6.4连接查询 6.5置换变量 6.6更新数据库 6.7查看和编辑XMLTYPE 6.8直接查询导出 6.9保存SQL脚本 6.10创建标准查询 7命令窗口 7.1输入SQL语句和命令 7.2开发命令文件 ...
Oracle PL/SQL语言初级教程 PL/SQL是Oracle对标准数据库语言的扩展,Oracle公司...通过本教程的学习,您将初步掌握PL/SQL语言,能够利用PL/SQL语言完成建表、查询、添加、删除数据以及事务处理语句的基本用法。
6.2 结果表格处理..................................................36 6.3 实例模式查询..................................................40 6.4 连接查询.....................................................
它允许SQL的数据操纵语言和查询语句包含在块结构(block_structured)和代码过程语言中,使PL/SQL成为一个功能强大的事务处理语言。在甲骨文数据库管理方面,PL/SQL是对结构化查询语言(SQL)的过程语言扩展。PL/SQL的...
它允许SQL的数据操纵语言和查询语句包含在块结构(block_structured)和代码过程语言中,使PL/SQL成为一个功能强大的事务处理语言。在甲骨文数据库管理方面,PL/SQL是对结构化查询语言(SQL)的过程语言扩展。PL/SQL的...
第二章 触发器 2.1 触发器的创建 2.2 触发器的管理 2.3 触发器的新功能 2.4 替代触发器 2.5 触发器的局限性 第三章 对象 3.1 对象的定义 3.2 对象的存贮和检索 第四章 调试 4.1 编写 DEBUG 程序包(例程) 4.2 调用...
14. 窗口、数据库会话和事务.104 14.1 会话模式.............104 14.2 运行于多路会话或双路会话模式....104 15. 浏览对象.............................105 15.1 使用浏览器...........105 15.2 浏览器过滤器.........
PL/SQL是一种高性能的基于事务处理的语言,能运行在任何ORACLE环境中,支持所有数据处理命令。 通过使用PL/SQL程序单元处理SQL的数据定义和数据控制元素。