首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Server行锁

Server行锁
EN

Stack Overflow用户
提问于 2011-01-07 07:32:54
回答 2查看 4.1K关注 0票数 3

如何在Server 2005中使用行锁。我执行行锁定的sql,这是

代码语言:javascript
复制
SELECT *
FROM authors
WITH (HOLDLOCK, ROWLOCK)
WHERE au_id = '274-80-9391'

它可以正常工作,但在这种情况下,行是用于更新的锁,而不是用于选择的锁。我只想知道如何锁定一行,因此在SQL Server中发出SQL时,其他用户看不到该行。请引导我。谢谢

EN

回答 2

Stack Overflow用户

发布于 2011-01-07 16:02:55

您不能隐藏一行,以免其他SQL查询看到它。如果打开事务、锁定一行并保持打开事务,则会导致其他SQL查询阻塞,等待事务结束,锁清除。但是,如果查询以不同的事务隔离级别运行(例如:读取未提交),则它们将绕过锁并仍然查看该行的值。

票数 2
EN

Stack Overflow用户

发布于 2011-12-13 23:26:08

如果要跳过已锁定的行,可以在Server中使用READPAST提示。这需要在读取锁定行的查询上指定,而不是在锁定它们的查询上指定。网上图书:

指定数据库引擎不读取其他事务锁定的行。当指定READPAST时,将跳过行级锁。

带有READPAST提示的SELECT语句将返回所有非锁定行并跳过锁定行。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4623436

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档