sql - 选择行并更新相同的行以进行锁定?

标签 sql sql-server sql-server-2005 tsql

我需要编写一个程序,允许我选择 x 行并同时更新这些行,以便调用应用程序知道这些记录已锁定并正在使用中。我在表中有一列名为“锁定”。下次调用该过程时,它只会提取下 x 条未选中“锁定”列的记录。我已经阅读了一些有关 SQL Server 的 OUTPUT 方法的信息,但不确定这是我想要做的。

最佳答案

正如您所建议的,您可以有效地使用 OUTPUT 子句:

现场演示:https://data.stackexchange.com/stackoverflow/query/8058/so3319842

UPDATE #tbl
SET locked = 1
OUTPUT INSERTED.*
WHERE id IN (
    SELECT TOP 1 id
    FROM #tbl
    WHERE locked = 0
    ORDER BY id
)​

另见这篇文章:

http://www.sqlmag.com/article/tsql3/more-top-troubles-using-top-with-insert-update-and-delete.aspx

关于sql - 选择行并更新相同的行以进行锁定?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3319842/

相关文章:

c# - NHibernate 中的自然排序

sql - 迭代生成数值

sql - TSQL - 如何找到日期之间缺失的月份?

c# - 更改数据集时,SqlDependency 不会触发 OnChange 事件

mysql - 如何在 SQL 中使用条件语句进行排序

mysql - LEFT JOIN 麻烦

sql-server - 将 NULL 转换为空字符串 - 从字符串转换为 uniqueidentifier 时转换失败

c# - 如何使用 C# 代码向 nvarchar 插入新行

sql - 在 SQL Server 上插入更新存储过程

xml - 使用 "FOR XML PATH"时如何避免字符编码?