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

DDi*_*ita 2 sql t-sql sql-server sql-server-2005

我需要编写一个程序,允许我选择x行数,同时更新这些行,以便调用应用程序知道这些记录被锁定和使用.我在表中有一个名为"locked"的列.下次调用该过程时,它将仅拉出未检查"已锁定"列的下一x个记录.我已经阅读了一些关于SQL Server的OUTPUT方法,但不确定这是我想要做的.

Cad*_*oux 7

如您所建议,您可以有效地使用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
)?
Run Code Online (Sandbox Code Playgroud)

另见本文:

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