SQL Server处理具有多个客户端的队列

时间:2018-01-13 20:12:44

标签: c# sql-server linq

我有数千个要处理的项目存储在SQL Server表中。几个客户从表中取出小批量并将其标记为已出列。如何确保没有项目多次出列?

1 个答案:

答案 0 :(得分:-1)

您将需要使用存储过程和事务。

create procedure my_proc @Count INT AS
  BEGIN TRANSACTION
  DECLARE @TblTmp TABLE (ID BIGINT, ...)
  SELECT TOP(@Count) ID, <other columns> into @TblTmp FROM <table>
  DELETE FROM <table> WHERE ID IN (SELECT ID FROM @TmpTable)
  COMMIT
  SELECT * FROM @TmpTable

此过程采用指定块大小的参数并使用表变量进行临时存储,您需要填写@tmpTable以使其与您要选择的列匹配,并且需要包含某种方法来识别选择的行(在我的示例中是ID的目的。)。