0

我是否可以在 SQL Server 中使用锁,这样如果我选择一条记录,则在删除锁之前,任何其他选择查询都不应该返回锁定的记录。

以下是示例查询:

SQL 表名称:表 1

让 sql 表中的数据为:只有一列“名称”在 3 行中具有值(“ABC”、“XYZ”、“测试”)

所以,如果我运行一个带有一些锁的选择查询,如下所示:

 SELECT TOP 1 * FROM Table1 -- Suppose this query returns ABC 

然后,如果我在新的查询窗口中运行相同的查询(很多次),但它不应该返回值“ABC”,直到我删除锁。

4

2 回答 2

1
SELECT *
FROM T WITH (XLOCK, ROWLOCK, HOLDLOCK) --disallow readers, lock on rows not pages or table
WHERE SomeCondition

不过,这不会阻塞SNAPSHOT模式下的并发阅读器。你不能阻止那些。

于 2013-08-26T12:59:26.663 回答
-2

要锁定 DML,您可以使用“选择更新”。但是,如果您还想锁定选择,那么您应该在附加列和触发器的帮助下明确地进行锁定。

于 2013-08-26T12:36:06.797 回答