oracle 9i 同时锁表???

空的 2011-03-30 12:30:08
有两个进程,同一个程序,先执行的那个a,select something from ddd for update 了(锁了),然后中间因一些原因延时了一会,在这延时中另一个进程b也select something from ddd for update 了(锁了),然后b 和a 都执行了update something=(something(原来的)+100),结果本来是something+200的,现在只有something+100
这在oracle 9i中可能出现吗?
...全文
61 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
luoyoumou 2011-03-31
  • 打赏
  • 举报
回复
-- Oracle的死锁情况很少发生!
-- 建议楼主去看看死锁原理!
空的 2011-03-31
  • 打赏
  • 举报
回复
ok,谢谢各位
huangdh12 2011-03-30
  • 打赏
  • 举报
回复
应该不可能同时锁住吧。 肯定有一个时间顺序吧。 没试过。
秋雨飘落 2011-03-30
  • 打赏
  • 举报
回复
[Quote=引用楼主 erhou134 的回复:]
有两个进程,同一个程序,先执行的那个a,select something from ddd for update 了(锁了),然后中间因一些原因延时了一会,在这延时中另一个进程b也select something from ddd for update 了(锁了),然后b 和a 都执行了update something=(something(原来的)+100),结果本来是something+200……
[/Quote]

a执行了FORUPDATE锁住表以后,B不能再对表进行锁住了,必须等A释放以后才能对表进行锁住
hanzs 2011-03-30
  • 打赏
  • 举报
回复
不会同时锁的,进程b执行时会没有响应,直到进程a释放后,进程b才能继续

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧