Casi d’uso dei trigger INSTEAD OF (DML)

Creare e ottimizzare i trigger in SQL Server

Florin Angelescu

Instructor

Uso generale dei trigger INSTEAD OF

  • Impedire operazioni
  • Controllare le istruzioni del database
  • Garantire l’integrità dei dati
Creare e ottimizzare i trigger in SQL Server

Trigger che impediscono modifiche

CREATE TRIGGER PreventProductChanges
ON Products
INSTEAD OF UPDATE
AS
    RAISERROR ('Gli aggiornamenti dei prodotti non sono consentiti.
                Contatta l’amministratore del database se serve una modifica.', 16, 1);
Creare e ottimizzare i trigger in SQL Server

Trigger che impediscono e notificano

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 ('Le voci cliente non possono essere rimosse.', 16, 1);

    EXECUTE SendNotification @RecipientEmail = '[email protected]'
                              ,@EmailSubject = 'Comportamento sospetto del database'
                              ,@EmailBody = @EmailBodyText;
Creare e ottimizzare i trigger in SQL Server

Trigger con logica condizionale

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 ('Non puoi inserire ordini senza stock disponibile.', 16, 1);
    ELSE
        INSERT INTO dbo.Orders (Customer, Product, Quantity, OrderDate, TotalAmount)
        SELECT Customer, Product, Quantity, OrderDate, TotalAmount FROM inserted;
Creare e ottimizzare i trigger in SQL Server

Trigger con logica condizionale

Logica condizionale per i trigger

Creare e ottimizzare i trigger in SQL Server

Passiamo alla pratica!

Creare e ottimizzare i trigger in SQL Server

Preparing Video For Download...