用select * from table for update进行加解锁的问题

代码间的舞者 2009-07-14 12:13:35
为解决并发的问题,现要执行以下操作:
select id+1 into userid from tuser for update
update tuser set id=userid

给查询语句加锁,执行更新后自动解锁


问题是,有没有可能出现这样的情况:
给表加锁后,还未进行更新语句之前,数据库临时执行另一个对该行的更新。那么这时数据库会执行前一个更新工作而让第三个操作等待?还是执行了第三个操作,同时破坏锁。

有什么好的办法解决并发的问题?
...全文
3620 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
wwk8984612 2009-10-20
  • 打赏
  • 举报
回复
偶也学习一下来 先进先出
代码间的舞者 2009-07-20
  • 打赏
  • 举报
回复
谢谢大家啦...不过,这个问题还想再探讨下去
又是违规昵称 2009-07-14
  • 打赏
  • 举报
回复
"给表加锁后,还未进行更新语句之前,数据库临时执行另一个对该行的更新"

加锁后,另一个对该行的更新会被阻塞,直至前一事务提交或回滚释放锁
suncrafted 2009-07-14
  • 打赏
  • 举报
回复
first in first out
jdsnhan 2009-07-14
  • 打赏
  • 举报
回复
实践一下,你会记忆的更深刻。

xinglongjian 2009-07-14
  • 打赏
  • 举报
回复
1楼说的对,加锁后其他的操作不会对此资源进行访问。
nicai00 2009-07-14
  • 打赏
  • 举报
回复



加锁 是 真对多个用户来说的 !!

你 已经加锁了 其他 用户不可能修改 , 在 你 修改后未提交 之前 其他用户只能 select ;;;


仅供参考 凭经验想出来的 ! 本人 没实践过的.....
zl3450341 2009-07-14
  • 打赏
  • 举报
回复
学习
andy121212 2009-07-14
  • 打赏
  • 举报
回复
学习 。。。

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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