我正在尝试从表QUEUE
获取记录并删除相同的记录。
CREATE TABLE DBO.QUEUE
(
QUEUEID INT IDENTITY(1, 1) NOT NULL PRIMARY KEY,
SOMEACTION VARCHAR(100)
)
使用updlock
& readpast
我能够删除已处理的记录,但我还需要该记录,如何做到这一点?
我在结果集中需要QUEUEID
和SOMEACTION
列。
BEGIN TRAN TRAN1
SELECT TOP 1 @queueid = QUEUEID
FROM DBO.QUEUE WITH (updlock, readpast)
PRINT 'processing queueid # ' + CAST(@queueid AS VARCHAR)
DELETE FROM DBO.QUEUE
WHERE QUEUEID = @queueid
COMMIT
答案 0 :(得分:3)
正如您和@Andreas已经提到的那样 - 在您的OUTPUT
声明中使用DELETE
子句:
DELETE FROM DBO.QUEUE
OUTPUT deleted.QueueId, deleted.SomeAction
WHERE QUEUEID = @queueid
这将返回(作为结果集)已删除的值。