我使用这样的查询来更新表的某些列:
WITH MyTable AS
(
SELECT TOP 1
*,
ROW_NUMBER() OVER (ORDER BY T.dtDate ASC) AS RowNum
FROM
important.Table T
WHERE
bWorking = 1
)
UPDATE MyTable
SET iIDfkToOtherTable = 6
WHERE RowNum = 1
此语句中有两个查询(SELECT
和UPDATE
(,所以我不确定其他用户是否能够更改"重要。表"值,而我在SELECT
和UPDATE
之间。有人可以给我一个线索吗?谢谢!
为了原子性,它本质上是一个查询。 它本质上与更新相同...从这些术语中:
https://stackoverflow.com/a/2334741/84206
实际上,这里有一个类似但不同的问题,建议使用这样的CTE来完成原子性,而不是两步选择/更新:
https://stackoverflow.com/a/42470136/84206
不要把它看作是两个查询。这就是程序思维。SQL Server 是基于设置的,在本例中,您将定义一个结束状态"这组数据将应用此转换"。
作为一个单一的定义,它将永远是原子的。