菜鸟问个SQL锁问题

saintjackson 2006-11-29 05:56:06
SQL Server2000下面 ,打开两个查询分析器先执行
begin tran
update table1 set c = '11' where c='11'
waitfor delay '00:00:30'
commit tran
然后
begin tran
select * from table1
where c='11'
commit tran
理论上第一个执行完后第二条就能执行.可是第二条不能执行.线程阻塞.跪求答案.
...全文
208 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
saintjackson 2006-12-02
  • 打赏
  • 举报
回复
就是30秒之后也没有办法执行...如果在第一个连接中就能够执行.但是在第二个连接中是无论什么时候都不能执行...理论上是30秒后就释放了x锁...但现实中他就阻塞了..我也不知道是什么原因
mschen 2006-12-01
  • 打赏
  • 举报
回复
begin tran

update table1 set c = '11' where c='11'

waitfor delay '00:00:30'

commit tran

在更新语句中,你使用了事务.而更新语句所加的X锁在事务提交之前是不会释放的.因此你另外一个查询语句要等到30秒之后才能执行.
reizedelphi 2006-12-01
  • 打赏
  • 举报
回复
你是30s以后才执行当然不行啊
他没执行就还没上缩
saintjackson 2006-12-01
  • 打赏
  • 举报
回复
有没有哪位老大知道问题所在啊....帮忙顶一下!
renfeiyang 2006-11-29
  • 打赏
  • 举报
回复
学习
studenthj 2006-11-29
  • 打赏
  • 举报
回复
学习

22,208

社区成员

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

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