Les déclencheurs ou triggers (en anglais) sont une fonctionnalité avancée très pratique des bases de données. Ils permettent de déclencher une action lorsque certains paramètres sont réunis dans une table.
Un déclencheur peut se produire lorsque :
- des données sont insérées (INSERT) ;
- des données sont modifiées (UPDATE) ;
- des données sont supprimées (DELETE) ;
- Juste avant (BEFORE) ou juste après (AFTER) l’action sur les données.
On se sert des triggers pour :
- mettre à jour d’autres données en déplaçant une partie de la logique applicative dans la base de données plutôt que dans l’outil utilisé (site web);
- vérifier les données à rentrer dans la base (contrôle avant ou après la requête) ;
- remplir un fichier de log afin de savoir qui a fait quoi ;
- pallier à un défaut d’intégrité référentielle (sur certaines bases de données qui ne le gèrent pas ou lorsque le concepteur ne l’a pas mis en place) ;
Spécificités des déclencheurs
- Le déclencheur s’exécute pour toutes les lignes. Si 10 lignes doivent être affectées par un traitement, le déclencheur se lancera 10 fois.
- Il ne peut y avoir qu’un seul déclencheur par action et moment. On ne peut pas empiler les triggers. On peut par contre créer des instructions qui se suivent dans le même trigger pour réaliser des opérations multiples (Avant insertion / Après modification…).
- Les déclencheurs ne peuvent pas lancer toutes les sortes d’actions (transaction, sélection de données). Les déclencheurs ne peuvent pas non plus agir sur la table qui l’a déclenché.
- Les triggers peuvent avoir des erreurs. En cas d’erreur et lorsque la base de données le permet, les actions sont déconstruites et la requête n’est pas réalisée (principe du rollback).
Tous les logiciels de bases de données n’implémentent pas de la même façon les triggers.