Oracle目前不支持脏读
![](/icons/31922dou.gif)
对于未提交
![](/icons/31922de.gif)
数据只能在本进程中查询
![](/icons/31922dou.gif)
其他进程用户无法查询
![](/icons/31922dou.gif)
这样可能会造成如下问题:
当A和B两个区别进程
![](/icons/31922de.gif)
事务同时进行
![](/icons/31922dou.gif)
B事务需要A事务
![](/icons/31922de.gif)
数据才能向下执行
![](/icons/31922dou.gif)
也就是说A事务执行成功后B事务才能继续执行
![](/icons/31922dou.gif)
如果A事务没有执行成功
![](/icons/31922dou.gif)
B事务不能执行
![](/icons/31922dou2.gif)
对于这种情况可以采用加锁
![](/icons/31922de.gif)
方式进行
![](/icons/31922dou.gif)
可以在两个事务
![](/icons/31922de.gif)
执行过程中增加排他锁
![](/icons/31922dou.gif)
例如在A事务和B事务中都同时更新某张表
![](/icons/31922de.gif)
某
![](/icons/31922yi.gif)
条记录:update ss_
![](/icons/31922set.gif)
a=1 where xtsb=1,这样就成功增加了排他锁
![](/icons/31922dou2.gif)
当A事务先执行时
![](/icons/31922dou.gif)
B事务肯定就要等待A事务
![](/icons/31922de.gif)
完成才能继续执行
![](/icons/31922dou2.gif)
当B事务先执行时
![](/icons/31922dou.gif)
由于产生数据
![](/icons/31922de.gif)
A事务没有执行
![](/icons/31922dou.gif)
所以也无法执行
![](/icons/31922dou.gif)
B事务回滚
![](/icons/31922dou.gif)
等待A事务执行完毕
![](/icons/31922dou.gif)
再执行
延伸阅读
- 2011-6-6-- oracle,oracle raid
- 2011-6-6-- oracle,Oracle(一)
- 2011-5-13-- oracle,[推荐]ORACLE PL/SQL编程详解之三:PL/SQL流程控制语句(不给规则,不成方圆)
- 2011-1-8-- oracle,甲骨文宣布推出Oracle融合应用软件
- 2010-12-15-- oracle,Oracle(3)
- 2011-3-31-- oracle,share oracle 心得
- 2011-3-21-- 电子书,Oracle电子书汇总
- 2010-12-16-- oracle,Oracle(3)
- 2010-12-10-- oracle,Oracle称霸全世界的野心
- 2010-12-9-- oracle,Oracle捕获问题SQL解决CPU过渡消耗
最新评论