Introduction

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

Florin Angelescu

Instructor

Qu'est-ce qu'un déclencheur ?

  • Type spécial de procédure stockée
  • Exécutée lorsqu'un événement survient sur le serveur de base de données

Fonctionnement d'un déclencheur

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

Types de déclencheurs (selon les commandes T-SQL)

  • Déclencheurs DML (Data Manipulation Language)
    • Instructions INSERT, UPDATE ou DELETE
  • Déclencheurs DDL (Data Definition Language)
    • Instructions CREATE, ALTER ou DROP
  • Déclencheurs de connexion
    • Événements LOGON
Création et optimisation de déclencheurs dans SQL Server

Types de déclencheurs (selon le comportement)

  • Déclencheur AFTER

    • L'instruction initiale s'exécute
    • Des instructions supplémentaires sont déclenchées
  • Exemples d'utilisation

    • Reconstruire un index après un gros INSERT
    • Avertir l'admin lors d'une mise à jour de données
Création et optimisation de déclencheurs dans SQL Server

Types de déclencheurs (selon le comportement)

  • Déclencheur INSTEAD OF

    • Empêche l'exécution de l'instruction initiale
    • Exécute à la place une instruction de remplacement
  • Exemples d'utilisation

    • Empêcher les insertions
    • Empêcher les mises à jour
    • Empêcher les suppressions
    • Empêcher les modifications d'objets
    • Avertir l'admin
Création et optimisation de déclencheurs dans SQL Server

Définition d'un déclencheur (avec AFTER)

-- Create the trigger by giving it a descriptive name
CREATE TRIGGER ProductsTrigger

-- The trigger needs to be attached to a table ON Products
-- The trigger behavior type AFTER INSERT
-- The beginning of the trigger workflow AS
-- The action executed by the trigger PRINT ('An insert of data was made in the Products table.');
Création et optimisation de déclencheurs dans SQL Server

Définition d'un déclencheur (avec INSTEAD OF)

-- Create the trigger by giving it a descriptive name
CREATE TRIGGER PreventDeleteFromOrders
-- The trigger needs to be attached to a table
ON Orders
-- The trigger behavior type
INSTEAD OF DELETE
-- The beginning of the trigger workflow
AS
-- The action executed by the trigger
PRINT ('You are not allowed to delete rows from the Orders table.');
Création et optimisation de déclencheurs dans SQL Server

AFTER vs INSTEAD OF

CREATE TRIGGER MyFirstAfterTrigger
ON Table1
-- Triggered after 
-- the firing event (UPDATE)
AFTER UPDATE
AS
{trigger_actions_section};
CREATE TRIGGER MyFirstInsteadOfTrigger
ON Table2
-- Triggered instead of 
-- the firing event (UPDATE)
INSTEAD OF UPDATE
AS
{trigger_actions_section};
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...