Классика баз данных - статьи

       

Реализация функциональности очереди


Функция OUTPUT также позволяет удобно реализовать функциональность очереди, "извлекая" из таблицы запись, при этом удалять ее. Например, если потребуется функциональность очередей на выполнение заказа, то необходимо будет создать таблицу-очередь, например CREATE TABLE [Queue]( [QueueID] [int] IDENTITY(1,1) NOT NULL, [OrderID] [int] NOT NULL

)

и с помощью нее реализовать необходимую функциональность, используя функцию OUTPUT:

DECLARE @Queue TABLE (QueueID int, OrderID int)

DELETE TOP 1 FROM [Queue] ORDER BY QueueID OUTPUT deleted.QueueID, deleted.OrderID INTO @Queue

SELECT * FROM @Queue

Без использования функции OUTPUT, код получается несколько более громоздким: DECLARE @Queue TABLE (QueueID int, OrderID int)

INSERT INTO @Queue(QueueID, OrderID) SELECT TOP 1 [Queue].QueueID, [Queue].OrderID FROM [Queue]

DELETE [Queue] FROM [Queue] AS Q1 INNER JOIN @Queue AS Q2 ON Q1.QueueID = Q2.QueueID

SELECT * FROM @Queue



Содержание раздела