我有一系列需要自動運行的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;