3
私はテーブル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
使用しているSQLのバージョンは?ここでは取引が適切と思われます。 –
Sql 2012バージョン – user584018
[手動](https://msdn.microsoft.com/en-us/library/ms189835.aspx#CaptureResults)をお読みになりましたか? 'DELETE FROM DBO.QUEUE OUTPUT DELETED.QUEUEID、DELETED.SOMEACTION WHERE QUEUEID = @ queueid' – Andreas