我在带有“状态”列的表中有许多记录,我想选择“状态=待处理”的单个记录,并在同一原子查询中将其标记为“状态=处理中”。最好的方法是什么?
这是必需的,因为可以同时运行多个查询以尝试处理这些记录,并且我不希望两个线程都选择要处理的同一记录。
最佳答案
您可以使用OUTPUT子句:
UPDATE [table]
SET Status = 'InProcess'
OUTPUT deleted.*
WHERE Status = 'Pending'
如果您要获得具有新状态的行或在旧状态下删除该行,则可以在此处使用插入的表名。
关于sql - 如何从数据库中选择一条记录并在原子查询中对其进行更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5726348/