我有一系列需要原子地运行的 T-SQL 查询(见下文)...目的是允许一个用户每次检索单个唯一行,并防止其他用户同时检索同一行。
到目前为止,我看到了两种可能的解决方案。1)表提示(HOLDLOCK、TABLOCKX)和2)事务隔离级别(SERIALIZABLE)...
我的问题:
1.哪个选项更好?
2.还有另外/更好的解决方案吗?
到目前为止,我看到了两种可能的解决方案。1)表提示(HOLDLOCK、TABLOCKX)和2)事务隔离级别(SERIALIZABLE)...
我的问题:
1.哪个选项更好?
2.还有另外/更好的解决方案吗?
DECLARE @recordId int;
SELECT @recordId = MIN([id])
FROM Exceptions
WHERE [status] = 'READY';
UPDATE Exceptions
SET [status] = 'PROCESSING',
[username] = @Username
WHERE [id] = @recordId;
SELECT *
FROM Exceptions
WHERE [id] = @recordId;