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