首页 > 数据库技术 > 详细

使用Sqlserver更新锁防止数据脏读

时间:2016-01-29 20:52:34      阅读:139      评论:0      收藏:0      [点我收藏+]

有时候我们需要控制某条记录在程序读取后就不再进行更新,直到事务执行完释放后才可以。这时候我们就可以将所有要操作当前记录的查询加上更新锁,以防止查询后被其它事务修改。这种操作只锁定表中某行而不会锁定整个表,体验更好。

测试sql代码如下:

在一个查询中执行如下语句

begin tran
 SELECT InvestState FROM InvestOrdersABC WITH (UPDLOCK) where id=10005
 waitfor delay 00:00:10 
 update InvestOrdersABC set InvestState=2 where id=10005
commit tran

在另外的一个查询中执行以下语句

SELECT InvestState FROM InvestOrdersABC  where id=10005 

发现在第一个事务执行完以前查到的数值还是原来的数值0,直到更新完成后才会变成2

如果执行更新操作:

begin tran
 update InvestOrders set InvestState=‘3‘ where id=10005
commit tran

 发现无法更改,只能等到第一个查询完成后才会进行修改。

使用Sqlserver更新锁防止数据脏读

原文:http://www.cnblogs.com/silent2012/p/5169566.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!