Oracle-事务处理开始与结束情况;事务的保存点
2016-09-29 21:41
309 查看
事务是用来分割数据库活动的逻辑工作单元。事务既有起点,也有终点:当发生下列事件时,事务就开始了:
1.连接到数据库上,并执行第一条DML语句
2.前一个事务结束后,又输入另外一条DML语句
在下列事件之一发生时,事务就结束了:
1.执行Commit或者RollBack语句
2.执行一条DDL语句,例如Create Table语句;在这种情况下,会自动执行Commit语句
3.执行一条DCL语句,例如Grant语句;在这种情况下,会自动执行Commit语句
4.断开与数据库链接。在退出SQL*Plus事,通常会输入EXit命令,此时会自动执行Commit语句。如果SQL*Plus被意外终止(例如运行SQL*Plus的计算机崩溃)那么就会执行RollBack语句。
事务完成后,如果不显式的提交或者回滚事务,都被认为是不好的编程习惯,因此确保在每个事物后面都要执行Commit或者RollBack语句。
事务中任何地方都可以设置一个保存点(savepoint),这样可以将修改回滚到保存点处。
例:product_id price
1 19.95
2 30
update products
set price = price * 1.20
where product_id = 1;
savepoint save1;
update products
set price = price *1.30
where product_id =2;
rollback to savepoint save1;
这样保留了产品1的价格:
product_id price
1 23.94
2 30
1.连接到数据库上,并执行第一条DML语句
2.前一个事务结束后,又输入另外一条DML语句
在下列事件之一发生时,事务就结束了:
1.执行Commit或者RollBack语句
2.执行一条DDL语句,例如Create Table语句;在这种情况下,会自动执行Commit语句
3.执行一条DCL语句,例如Grant语句;在这种情况下,会自动执行Commit语句
4.断开与数据库链接。在退出SQL*Plus事,通常会输入EXit命令,此时会自动执行Commit语句。如果SQL*Plus被意外终止(例如运行SQL*Plus的计算机崩溃)那么就会执行RollBack语句。
事务完成后,如果不显式的提交或者回滚事务,都被认为是不好的编程习惯,因此确保在每个事物后面都要执行Commit或者RollBack语句。
事务中任何地方都可以设置一个保存点(savepoint),这样可以将修改回滚到保存点处。
例:product_id price
1 19.95
2 30
update products
set price = price * 1.20
where product_id = 1;
savepoint save1;
update products
set price = price *1.30
where product_id =2;
rollback to savepoint save1;
这样保留了产品1的价格:
product_id price
1 23.94
2 30
相关文章推荐
- Oracle 事务的开始与结束
- C#.NET执行Oracle DBLink关于“ORA-02041: 客户数据库未开始一个事务处理”
- oracle分布式处理时报“ORA-02041: 客户数据库未开始一个事务处理”解决办法 - z
- 最近碰到一个oracle“分布式事务处理已经开始”的问题
- oracle需要显式结束事务
- Oracle数据库事务处理和故障恢复
- SQL Server与Oracle数据库事务处理横向对比
- ORA-02041: 客户数据库未开始一个事务处理 .NET 连接低版本ORACLE时需要注意的问题
- oracle事务处理
- oracle中的事务是自动开始的
- Oracle和SQL Server在事务处理上的区别
- mssql,firebird,oracle对事务的处理不同
- 关于“ORA-02041: 客户数据库未开始一个事务处理”
- SQL Server和Oracle中事务处理的特点
- 初识jdbc对oracle数据库事务处理(隔离级别)
- 正好整理了一下,自己做了个连接数据库的组件,支持SQLSERVER,ACCESS,ORACLE,FoxPro,MySql,IBM DB2,DBF等数据库,并且支持事务处理
- Oracle中提取sysdate函数值和系统日期不同的情况处理
- Oracle命令行导入导出(用户名或密码包含特殊字符的特殊情况处理)
- Oracle之事务处理
- Oracle 事务处理的完整流程分析