gpt4 book ai didi

sql-server - 从 SQL Server 数据库获取 "next"行并在单个事务中标记它

转载 作者:行者123 更新时间:2023-12-02 23:40:28 24 4
gpt4 key购买 nike

我有一个 SQL Server 表,用作队列,它正在由多线程(很快将成为多服务器)应用程序处理。我想要一种方法让进程从队列中声明下一行,将其标记为“进程中”,而多个线程(或多个服务器)不可能同时声明同一行。

有没有办法更新一行中的标志并同时检索该行?我想要类似这样的伪代码,但理想情况下,不会阻塞整个表:

Block the table to prevent others from reading
Grab the next ID in the queue
Update the row of that item with a "claimed" flag (or whatever)
Release the lock and let other threads repeat the process

使用 T-SQL 实现此目的的最佳方法是什么?我记得有一次看到一条语句,它会删除行,同时将删除的行存入临时表中,以便您可以对它们执行其他操作,但我现在找不到它。

最佳答案

您可以使用 OUTPUT 子句

UPDATE myTable SET flag = 1
WHERE
id = 1
AND
flag <> 1
OUTPUT DELETED.id

关于sql-server - 从 SQL Server 数据库获取 "next"行并在单个事务中标记它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2358833/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com