我有一系列需要自动运行的T-SQL查询。 (见下文)...目的是让一个用户一次检索一个唯一的行,并防止其他用户同时检索同一行。TABLOCKX与SERIALIZABLE
到目前为止,我已经看到了两种可能的解决方案。 1)表提示(HOLDLOCK,TABLOCKX)和2)事务隔离级别(SERIALIZABLE)...
我的问题:
哪种选择更好?
有没有另一个/更好的解决方案?
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;