Use-cases voor INSTEAD OF-triggers (DML)

Triggers in SQL Server bouwen en optimaliseren

Florin Angelescu

Instructor

Algemeen gebruik van INSTEAD OF-triggers

  • Voorkom bewerkingen
  • Beheer databasestatements
  • Bewaak dataintegriteit
Triggers in SQL Server bouwen en optimaliseren

Triggers die wijzigingen blokkeren

CREATE TRIGGER PreventProductChanges
ON Products
INSTEAD OF UPDATE
AS
    RAISERROR ('Updates van producten zijn niet toegestaan.
                Neem contact op met de databasebeheerder als een wijziging nodig is.', 16, 1);
Triggers in SQL Server bouwen en optimaliseren

Triggers die blokkeren en melden

CREATE TRIGGER PreventCustomersRemoval
ON Customers
INSTEAD OF DELETE
AS
    DECLARE @EmailBodyText NVARCHAR(50) =
                       (SELECT 'User "' + ORIGINAL_LOGIN() +
                        '" tried to remove a customer from the database.');

    RAISERROR ('Klantrecords mogen niet worden verwijderd.', 16, 1);

    EXECUTE SendNotification @RecipientEmail = '[email protected]'
                              ,@EmailSubject = 'Verdacht databasegedrag'
                              ,@EmailBody = @EmailBodyText;
Triggers in SQL Server bouwen en optimaliseren

Triggers met voorwaardelijke logica

CREATE TRIGGER ConfirmStock
ON Orders
INSTEAD OF INSERT
AS
    IF EXISTS (SELECT * FROM Products AS p
               INNER JOIN inserted AS i ON i.Product = p.Product
               WHERE p.Quantity < i.Quantity)
        RAISERROR ('Je kunt geen orders plaatsen zonder voorraad.', 16, 1);
    ELSE
        INSERT INTO dbo.Orders (Customer, Product, Quantity, OrderDate, TotalAmount)
        SELECT Customer, Product, Quantity, OrderDate, TotalAmount FROM inserted;
Triggers in SQL Server bouwen en optimaliseren

Triggers met voorwaardelijke logica

Voorwaardelijke logica voor triggers

Triggers in SQL Server bouwen en optimaliseren

Laten we oefenen!

Triggers in SQL Server bouwen en optimaliseren

Preparing Video For Download...