oracle事务的原子性
来源:互联网 发布:杯酒释兵权知乎 编辑:程序博客网 时间:2024/05/01 12:17
ORACLE的事务与SQL server以及sybase有很大的不同,举个例子,假如表a有以下记录:
field1
1
3
0
4
其中对field1字段的约束条件是field1>0,那么当我们执行update a set field1=field1-1这条SQL语句时,将会出现一个错误,因为其中的第三条记录的field1等于0,减去1之后就会违反约束条件。
那么在SQL server或sybase中,出现这种错误之后,必须使用回滚来使表a回到修改之前的情况,否则第一二条记录的修改将会被保留;而在ORACLE中,表a还是会保持原样,所有的记录不会有任何变化。
这就是ORACLE事务的一个特性:原子性,SQL语句的效果是要么全部提交,要么全部回滚。如果语句出现错误,那么这条语句在错误之前的已经发生全部修改都回滚。
在ORACLE的事务处理中,存储过程的调用也是作为一个语句来看待的。也就是说,在调用ORACLE中调用存储过程,如果存储过程中出现了错误,ORACLE会自动回滚到存储过程被调用前的情况。
在SQL server和sybase中,事务是必须显示地开始的,否则每个语句本身就是一个事务,而在ORACLE中,事务是隐式的,没有办法自动提交,除非客户端的专门实现,例如ODBC和JDBC默认是会自动提交的(当然你也可以使用设置连接的属性来把事务的控制权取回来)。
对于有些情况下,我们可能需要保存已经进行的修改,那就需要when others来处理了,在exception处理中加上when others then null就会忽略语句中的错误,继续下去。
在ORACLE中,如下的语句:
begin
savepoint sp;
update a set field1=field1-1;
exception
when others then
rollback to sp;
end;
这种写法是完全没有必要的,因为这实际上是ORACLE自动事务的模仿,是一种重复。对于ORACLE事务的原子性和一致性已经实现的东西,实在没有必要再去重复。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/garefield/archive/2007/10/21/1835393.aspx
- ORACLE事务的原子性
- oracle事务的原子性
- oracle 事务原子性
- 事务的原子性
- 事务的原子性
- 理解事务的一致性和原子性
- 事务的原子性与提交区别
- 事务一致性与原子性的区别
- Redis 事务是原子性的吗
- reids事务的伪原子性
- 事务原子性
- Oracle 事务ACID基本概念(原子性、一致性、隔离性、持久性)
- 《Oracle编程艺术》学习笔记(15)-事务原子性
- jdbc原子事务的实现
- 事务的:原子性、一致性、分离性、持久性
- 事务的:原子性、一致性、分离性、持久性
- 事务的:原子性、一致性、分离性、持久性
- 事务的四大特性:原子性、一致性、分离性、持久性
- SciTE可以显示中日韩阿拉伯等字符的配置
- asp.net实现下载功能
- SQL Server 2008 存储结构之DCM、BCM
- Java数据库连接
- ahk模式窗口
- oracle事务的原子性
- Adobe Flash Builder 4 注册
- 使用PostBackUrl属性实现跨页面传值
- Android面试题目
- Linux下使用automake autoconf autoscan aclocal简单介绍
- JS绘图1
- Css扫盲之float
- 一、图的一些基本概念
- js绘图2