【发布时间】:2011-02-07 18:17:14
【问题描述】:
我有一系列需要以原子方式运行的 T-SQL 查询。 (见下文)...目的是允许 1 个用户一次检索一个唯一的行,并防止其他用户同时检索同一行。
到目前为止,我已经看到了两种可能的解决方案。 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;
【问题讨论】:
标签: sql sql-server tsql