Obsługa wielu wierszy w wyzwalaczu SQL Server

Mamy bazę danych z tabelą o nazwieWarehouseItem gdzie przechowywane są poziomy zapasów produktu. Muszę wiedzieć, kiedy kiedykolwiek ta tabela zostanie zaktualizowana, więc stworzyłem wyzwalacz, aby umieścić klucz podstawowy tego wiersza tabeli, który został zaktualizowany; do osobnej tabeli (jak system kolejki).

To jest mój spust:

IF ((SELECT COUNT(*) FROM sys.triggers WHERE name = 'IC_StockUpdate') > 0)
    DROP TRIGGER [dbo].[IC_StockUpdate]
GO
CREATE TRIGGER [dbo].[IC_StockUpdate] ON [dbo].[WarehouseItem]
AFTER UPDATE
AS
BEGIN

    -- Get Product Id
    DECLARE @StockItemID INT = (SELECT ItemID FROM INSERTED);
    DECLARE @WarehouseID INT = (SELECT WarehouseID FROM INSERTED);

    -- Proceed If This Product Is Syncable
    IF (dbo.IC_CanSyncProduct(@StockItemID) = 1)
    BEGIN

        -- Proceed If This Warehouse Is Syncable
        IF (dbo.IC_CanSyncStock(@WarehouseID) = 1)
        BEGIN

            -- Check If Product Is Synced
            IF ((SELECT COUNT(*) FROM IC_ProductCreateQueue WHERE StockItemID = @StockItemID) > 0)
            BEGIN

                -- Check If Stock Update Queue Entry Already Exists
                IF ((SELECT COUNT(*) FROM IC_StockUpdateQueue WHERE StockItemID = @StockItemID) > 0)
                BEGIN

                    -- Reset [StockUpdate] Queue Entry
                    UPDATE IC_StockUpdateQueue SET Synced = 0
                    WHERE StockItemID = @StockItemID;

                END
                ELSE
                BEGIN

                    -- Insert [StockUpdate] Queue Entry
                    INSERT INTO IC_StockUpdateQueue (StockItemID, Synced) VALUES
                    (@StockItemID, 0);

                END

            END
            ELSE
            BEGIN

                -- Insert [ProductCreate] Queue Entry
                INSERT INTO IC_ProductCreateQueue (StockItemID, Synced) VALUES
                (@StockItemID, 0);

                -- Insert [StockUpdate] Queue Entry
                INSERT INTO IC_StockUpdateQueue (StockItemID, Synced) VALUES
                (@StockItemID, 0);

            END

        END

    END

END
GO

Działa to doskonale, jeśli zaktualizowany jest tylko jeden wiersz w tabeli „WarehouseItem”. Jeśli jednak w tej tabeli zaktualizowano więcej niż jeden wiersz, mój wyzwalacz nie będzie w stanie go obsłużyć:

Czy istnieje sposób na iterację „wstawionej” kolekcji po zdarzeniu masowej aktualizacji? Lub w jaki sposób można obsługiwać aktualizacje wielu wierszy w wyzwalaczu?

questionAnswers(3)

yourAnswerToTheQuestion