【发布时间】:2012-09-03 20:29:03
【问题描述】:
阅读this有趣的文章后我有一些问题。
此表显示了死锁情况:
T1 对表 t_lock1 上 c1=5 的所有行持有 X 锁,而 T2 持有 X 锁定表 t_lock2 上所有 C1=1 的行。
现在这些事务中的每一个都想更新之前的行 被对方锁定。这会导致死锁。
问题 #1
- 事务是否获得锁?我知道从表中读取是通过共享锁来完成的,而写到表中是使用独占来完成的> 锁定(我说的是默认锁定设置)。
所以从这个例子看来,事务也持有一个锁......它是正确的吗?
问题 #2
...T1 对表 t_lock1 上 c1=5 的所有行持有 X 锁...
- 恕我直言,正如我所说,锁定不是每行(虽然可以进行,但作者没有提到它) - 那么他为什么说:在 C1=5 的所有行上 em> ?
【问题讨论】:
-
抱歉跑题了,你是怎么用边缘的边框做漂亮的截图的?
-
@njk 可能还有其他人,但snagit(商业/试用)是一个选项。
标签: sql-server sql-server-2005 deadlock