在这种情况下,
这两个概念是不同的,您想要的也不是。
若要执行所需的操作,以避免出现竞争情况,您需要强制使用非阻塞(READPAST)排他(UPDLOCK)行级(ROWLOCK)锁。您还可以使用OUTPUT子句将其设为单个原子语句。这样可以很好地扩展。
UPDATE
E
SET
[status] = 'PROCESSING', [username] = @Username
OUTPUT
INSERTED.*
FROM
(
SELECT TOP 1 id, [status], [username]
FROM Exceptions (ROWLOCK, READPAST, UPDLOCK)
WHERE [status] = 'READY'
ORDER BY id
) E
一般来说,锁有3个方面
和