Cas d'usage des déclencheurs INSTEAD OF (DML)

Création et optimisation de déclencheurs dans SQL Server

Florin Angelescu

Instructor

Usage général des déclencheurs INSTEAD OF

  • Empêcher certaines opérations
  • Encadrer les instructions de base de données
  • Assurer l'intégrité des données
Création et optimisation de déclencheurs dans SQL Server

Déclencheurs qui empêchent des modifications

CREATE TRIGGER PreventProductChanges
ON Products
INSTEAD OF UPDATE
AS
    RAISERROR ('Updates of products are not permitted.
                Contact the database administrator if a change is needed.', 16, 1);
Création et optimisation de déclencheurs dans SQL Server

Déclencheurs qui bloquent et avisent

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 ('Customer entries are not subject to removal.', 16, 1);

    EXECUTE SendNotification @RecipientEmail = '[email protected]'
                              ,@EmailSubject = 'Suspicious database behavior'
                              ,@EmailBody = @EmailBodyText;
Création et optimisation de déclencheurs dans SQL Server

Déclencheurs avec logique conditionnelle

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 ('You cannot place orders when there is no product stock.', 16, 1);
    ELSE
        INSERT INTO dbo.Orders (Customer, Product, Quantity, OrderDate, TotalAmount)
        SELECT Customer, Product, Quantity, OrderDate, TotalAmount FROM inserted;
Création et optimisation de déclencheurs dans SQL Server

Déclencheurs avec logique conditionnelle

Logique conditionnelle pour les déclencheurs

Création et optimisation de déclencheurs dans SQL Server

Passons à la pratique !

Création et optimisation de déclencheurs dans SQL Server

Preparing Video For Download...