首页 新闻 会员 周边 捐助

SQL WITH(XLOCK)的问题

0
悬赏园豆:20 [已解决问题] 解决于 2015-05-13 11:21

SQL比较渣,问一下各位,

在存储过程中依次执行语句A和语句B,语句A会影响语句B的查询结果,但是我不希望在一个会话里执行语句B的时候,另外一个回话执行语句A,导致查询的结果不对,请问一下加个WITH(XLOCK)有用吗? WITH(XLOCK)应该是排它锁吧?

语句A: UPDATE TableA SET xx=xx WHERE Id=1

语句B:SELECT * FROM TableA WITH(XLOCK)  WHERE XX=XX

龙卷风摧毁停车场!的主页 龙卷风摧毁停车场! | 菜鸟二级 | 园豆:210
提问于:2015-05-12 14:07
< >
分享
最佳答案
0

不需要xlock,默认读提交隔离级别下,S锁与X锁互斥,也就是你在select的时候,会阻塞更新

收获园豆:10
我是大菠萝 | 菜鸟二级 |园豆:365 | 2015-05-12 14:14

假如在一个会话中执行完A,还没有执行B,这时候另一个会话执行了A。那第一个会话执行B后查询出来的是 两个会话都执行了A的结果。我只想要在各自会话中执行B查出来的是自己会话中执行A的结果

龙卷风摧毁停车场! | 园豆:210 (菜鸟二级) | 2015-05-12 17:38

@晚上睡不着.白天打瞌睡: 你放在一个事务里就可以了

begin tran

  XXXXXXXX

end tran

我是大菠萝 | 园豆:365 (菜鸟二级) | 2015-05-28 10:16
其他回答(1)
1
收获园豆:10
邀月 | 园豆:25475 (高人七级) | 2015-05-12 15:21
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册