锁定SQL Server中的单行被选中

时间:2013-08-26 12:30:36

标签: sql sql-server

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

以下是示例查询:

SQL表名:表1

让sql表中的数据为:只有一列“Name”在3行中有值(“ABC”,“XYZ”,“Test”)

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

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

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

2 个答案:

答案 0 :(得分:1)

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

但这不会阻止SNAPSHOT模式下的并发读者。你无法阻止这些。

答案 1 :(得分:-2)

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