新建两个查询窗口:
第一个连接:
begin tran
select * from table1
where B='b2'
waitfor delay '00:00:30' --等待30秒
commit tran
第二个连接;
update table1 set A='aaaaaaaaa' where B='b2'刚看了一段文章。他是这样说的:
SQL Server采取的是乐观锁:对于Update,Insert,Delete自动采用X锁,对于Select,自动采用S锁:问题1:我运行第一个连接紧接运行第二个连接后。第二个连接的语句马上生效了(一行受影响),怎么感觉不是自动加锁。是上面这句话有问题还是我理解错了..select 是自动加锁还是人为加锁?问题2:在一个事务中里面有update table1 set A='aaaaaaaaa' where B='b2'这个语句,是什么时候释放锁呢是在这个update语句执行完之后还是整个事务结束提交后?
第一个连接:
begin tran
select * from table1
where B='b2'
waitfor delay '00:00:30' --等待30秒
commit tran
第二个连接;
update table1 set A='aaaaaaaaa' where B='b2'刚看了一段文章。他是这样说的:
SQL Server采取的是乐观锁:对于Update,Insert,Delete自动采用X锁,对于Select,自动采用S锁:问题1:我运行第一个连接紧接运行第二个连接后。第二个连接的语句马上生效了(一行受影响),怎么感觉不是自动加锁。是上面这句话有问题还是我理解错了..select 是自动加锁还是人为加锁?问题2:在一个事务中里面有update table1 set A='aaaaaaaaa' where B='b2'这个语句,是什么时候释放锁呢是在这个update语句执行完之后还是整个事务结束提交后?
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货