当前位置:  开发笔记 > 数据库 > 正文

T-SQL中的悲观锁定

如何解决《T-SQL中的悲观锁定》经验,为你挑选了1个好方法。

如果我在MS SQL Server中选择一行进行更新,并希望将其锁定,直到我更新或取消,哪个选项更好: -

1)使用像UPDLOCK这样的查询提示2)对事务使用REPEATABLE READ隔离级别3)任何其他选项.

谢谢,泽.



1> RoadWarrior..:

如果您正在等待最终用户等其他资源,请接受Dave Markle的建议但不要这样做.

否则,请尝试以下T-SQL代码:

BEGIN TRAN

SELECT *
FROM   authors AU
WITH   (HOLDLOCK, ROWLOCK)
WHERE  AU.au_id = '274-80-9391'

/* Do all your stuff here while the row is locked */

COMMIT TRAN

HOLDLOCK提示礼貌询问的SQL Server,直到您提交事务持有的锁.该ROWLOCK提示礼貌地要求的SQL Server只锁定该行,而不是发出页或表锁.

请注意,如果大量行受到影响,SQL Server将主动升级到页锁,或者您将拥有一大堆行锁填充服务器的内存并阻碍处理.

推荐阅读
依然-狠幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有