求解SQL SERVER加锁的问题!?

containsoft123 2009-08-28 11:48:54
在SQL SERVER 中执行一个关联了多个表进行查询或者修改的SQL语句,对于关联的多个表的加锁是怎么个情况?是从关联顺序,一个一表加锁吗?还是其他什么方式加锁?
例如:update a set name=b.name from a,b where a.id = b.id
执行这个语句的时候,对a,b表是怎么个加锁情况?是不是先加锁a,再加b。

理论上来讲,同时执行
update a set name=b.name from a,b where a.id = b.id
update b set name=a.name from b,a where b.id = a.id
会不会死锁?

数据库没学好,郁闷啊。
...全文
49 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
feixianxxx 2009-08-28
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 yang_ 的回复:]
不会死锁
update a set name=b.name from a,b where a.id = b.id
对a加更新锁,对b加共享锁
update b set name=a.name from b,a where b.id = a.id
对a加共享锁,对b加更新锁

[/Quote]
正解。。。
Yang_ 2009-08-28
  • 打赏
  • 举报
回复
加锁次序的说法没有根据
Yang_ 2009-08-28
  • 打赏
  • 举报
回复
不会死锁
update a set name=b.name from a,b where a.id = b.id
对a加更新锁,对b加共享锁
update b set name=a.name from b,a where b.id = a.id
对a加共享锁,对b加更新锁
--小F-- 2009-08-28
  • 打赏
  • 举报
回复
应该不会产生死锁 据说SQL会自动产生独占锁

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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