如何在Server 2005中使用行锁。我执行行锁定的sql,这是
SELECT *
FROM authors
WITH (HOLDLOCK, ROWLOCK)
WHERE au_id = '274-80-9391'它可以正常工作,但在这种情况下,行是用于更新的锁,而不是用于选择的锁。我只想知道如何锁定一行,因此在SQL Server中发出SQL时,其他用户看不到该行。请引导我。谢谢
发布于 2011-01-07 16:02:55
您不能隐藏一行,以免其他SQL查询看到它。如果打开事务、锁定一行并保持打开事务,则会导致其他SQL查询阻塞,等待事务结束,锁清除。但是,如果查询以不同的事务隔离级别运行(例如:读取未提交),则它们将绕过锁并仍然查看该行的值。
发布于 2011-12-13 23:26:08
如果要跳过已锁定的行,可以在Server中使用READPAST提示。这需要在读取锁定行的查询上指定,而不是在锁定它们的查询上指定。网上图书:
指定数据库引擎不读取其他事务锁定的行。当指定READPAST时,将跳过行级锁。
带有READPAST提示的SELECT语句将返回所有非锁定行并跳过锁定行。
https://stackoverflow.com/questions/4623436
复制相似问题