如果我在MS SQL Server中选择一行进行更新,并希望将其锁定,直到我更新或取消,哪个选项更好: -
1)使用像UPDLOCK这样的查询提示2)对事务使用REPEATABLE READ隔离级别3)任何其他选项.
谢谢,泽.
如果您正在等待最终用户等其他资源,请接受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将主动升级到页锁,或者您将拥有一大堆行锁填充服务器的内存并阻碍处理.