sql - 如何从数据库中选择一条记录并在原子查询中对其进行更新

标签 sql tsql sql-server-2008 select atomic

我在带有“状态”列的表中有许多记录,我想选择“状态=待处理”的单个记录,并在同一原子查询中将其标记为“状态=处理中”。最好的方法是什么?

这是必需的,因为可以同时运行多个查询以尝试处理这些记录,并且我不希望两个线程都选择要处理的同一记录。

最佳答案

您可以使用OUTPUT子句:

UPDATE [table]
SET Status = 'InProcess'
OUTPUT deleted.*
WHERE Status = 'Pending'


如果您要获得具有新状态的行或在旧状态下删除该行,则可以在此处使用插入的表名。

关于sql - 如何从数据库中选择一条记录并在原子查询中对其进行更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5726348/

相关文章:

c# - SQL 代码连接到一个由逗号分隔的键引用的表,并对其中的数据求和

sql - 连接值范围的最佳性能

sql-server - 在 where 条件下使用 Sql server 列别名

sql-server-2008 - SQL Server主体 "dbo"不存在,

sql - 如何避免在很多列上分组

mysql - 按没有匹配对象的匹配数排序

sql - 为每个不同的用户获取表中的第一个最低值及其发生日期

sql - 以随机顺序返回行

sql - 通过 report_id 获取 top 'n' 记录

sql - 为数据表中的每一行选择 COUNT(foreign ID)