Mise en place de l’intégrité référentielle sur une base de données
Utilisation des déclencheurs
Mise en place d’un trigger
Précautions à prendre
Un trigger est toujours associé à une table, il est impossible de l’associer à une vue ou a une table temporaire.
Une table peut avoir au maximum trois triggers, chacun étant déclenché en fonction de l’événement détecté sur la table
Insertion de ligne modification de ligne suppression de ligne
Chaque trigger est facultatif et une table peut n’avoir aucun trigger D’autre part, un trigger ne s’applique qu’à une seule table, plusieurs tables ne pouvant pas utiliser le même trigger.
La suppression d’une table entraîne la destruction de ses triggers
Principe de fonctionnement
Deux tables virtuelles sont créées au moment de la MAJ sur la table: INSERTED DELETED. Elles sont destinées à contenir les lignes de la table sur lesquelles ont été effectuées des opérations.
Les tables INSERTED et DELETED peuvent être utilisées par le trigger pour déterminer comment le traitement doit se dérouler. Ce traitement est à écrire par le développeur .
Les mécanismes d’utilisation par SQL Server de ces deux tables diffèrent en fonction de l’opération effectuée sur la table contenant le ou les triggers.
Cas de suppression d’une ligne de table (delete) La/les lignes supprimées sont placées dans la table temporaire DELETED et supprimées de la table réelle; la table DELETED et les tables de la base ne peuvent pas avoir de lignes en commun.
Cas de création d’une ligne de table (insert)
La/les lignes nouvelles sont placées dans la table temporaire INSERTED et dans la table réelle; toutes les lignes de la table INSERTED apparaissent dans la table de la base.
Cas de modification d’une ligne de table (update) La/les lignes avant modification sont placées dans la table temporaire DELETED et la/les lignes après modification sont placées dans la table temporaire INSERTED et dans la table réelle.
Création d’un trigger
Un trigger est un objet SQL Server, en conséquence de quoi: – les triggers seront gérés de manière autonome – chaque trigger porte un nom – chaque trigger possède un certain nombre de propriétés.
Les triggers doivent être créés juste après la création de la table de sorte que l’intégrité référentielle des données soit assurée.
La création d’un trigger peut se faire – de manière interactive grâce à l’interface graphique – en utilisant les procédures de SQL Server.
Utiliser la procédure create trigger
Syntaxe : CREATE TRIGGER nom de trigger ON nom de table FOR INSERT AS séquence1 d’ordres SQL FOR UPDATE AS séquence2 d’ordres SQL FOR DELETE AS séquence3 d’ordres SQL ou CREATE TRIGGER nom de trigger ON nom de table FOR INSERT, UPDATE AS séquence d’ordres SQL
Attention à la gestion des déclencheurs dans la fenêtre SQL Server
Exemples de mise en place de triggers
Les triggers définis sur la base de données ont deux rôles principaux:
– contrôler que les données manipulées vérifient l’intégrité référentielle, c’est à dire que les tables restent synchronisées.
Exemple: créer un nouveau salarié nécessite de l’affecter à un service existant.
– mettre en œuvre des traitements correspondant à une règle de gestion de l’entreprise
Exemple: lorsqu’un produit est passé en commande, on mettra à jour la quantité disponible en stock dans la table Produits..
