首页 新闻 会员 周边 捐助

sql高手进

0
悬赏园豆:5 [已解决问题] 解决于 2012-11-25 15:04

begin tran
update dbo.BankAccount set Balance=Balance+100
where BankAccountId='9555500100071120'
waitfor delay '00:00:10'
rollback tran

 

第二个用户进程中:

begin tran
select * from dbo.BankAccount where BankAccountId='9555500100071120'
rollback tran

为什么第二个用户要等待?第一个用户都没有加锁。。怎么要等待??高手回答

彬彬@科比的主页 彬彬@科比 | 初学一级 | 园豆:43
提问于:2012-11-11 16:55
< >
分享
最佳答案
0

你加了事务Begin Tran 做Update是会加行级锁的,如果你是做Insert的话,那就是表级锁了。

收获园豆:5
班级中队长 | 初学一级 |园豆:94 | 2012-11-16 10:32

自己试试在来这里说吧。。谢谢。

彬彬@科比 | 园豆:43 (初学一级) | 2012-11-16 11:53

@彬彬@科比: 这个我做过,我的分布式数据写入用的是队列的形式,你可以并发Insert加事务,看看报的错。

班级中队长 | 园豆:94 (初学一级) | 2012-11-16 11:57

如果有一个问题:

我在一个事务中select * from where id=1

怎样在另一个事务中不能读取该条数据??除非第一个事务提交或回滚,要怎样设置.用什么锁??

彬彬@科比 | 园豆:43 (初学一级) | 2012-11-21 22:05
其他回答(1)
0

update dbo.BankAccount 当然会加锁

acepro | 园豆:1218 (小虾三级) | 2012-11-12 11:05
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册