UPDATE dbo.A
SET StatusCode = 'booked'
, UpdateDate = GETDATE()
OUTPUT INSERTED.id INTO @TableVar
WHERE id = (
SELECT TOP 1 wq.id
FROM dbo.A AS wq
WHERE wq.statusCode = 'Claimed' and wq.id = 2
)
i need update table A which id equal 2 and statusCode equals ‘Claimed’ update to ‘booked’
is it threadsafe?
tks
You can improve concurrency safety by adding
with (updlock, holdlock)to the subquery:An equivalent would be to wrap the statement in a
repeatable readtransaction:This looks like: