我是否可以在SQL Server中使用锁定,这样如果我选择一条记录,则在删除锁定之前,任何其他选择查询都不应返回锁定的记录。
以下是示例查询:
SQL表名:表1
让sql表中的数据为:只有一列“Name”在3行中有值(“ABC”,“XYZ”,“Test”)
所以,如果我运行带有一些锁的select查询,如下所示:
SELECT TOP 1 * FROM Table1 -- Suppose this query returns ABC
然后如果我在新的查询窗口中运行相同的查询(很多次)但是在我删除锁之前它不应该返回值“ABC”。
答案 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,那么你应该在附加列和触发器的帮助下明确地进行锁定。