第一个用户进程中:
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
为什么第二个用户要等待?第一个用户都没有加锁。。怎么要等待??高手回答
Update不管有没有加显式的事务,他都会有排它锁,更新的时候其它查询是不能访问该被更新的记录
insert delete会吗?
为了保证事务的acid,事务会自动给表加锁
那如果第一个用户中的更新不用事务处理....假设这个过程时间很长,那么第二个用户需要等待嘛??
@彬彬@科比:
加锁就是让其他操作等待,如果不加所,其他操作就不需要等待了,但是你确定第二个用户得到脏数据没问题吗?
事务默认是加一个锁的