La gestion manuelle des événements dans les bases de données peut être laborieuse et sujette aux erreurs.
Cette approche augmente le risque d’incohérences et d’erreurs dans les données, affectant la fiabilité des systèmes.
Les déclencheurs offrent une solution automatisée pour gérer les événements en assurant l’intégrité et la cohérence des données à chaque modification.
Maîtriser le langage SQL en environnement SGBDR. SQL n'aura plus de secrets pour vous !
Les déclencheurs, ou triggers , sont des outils essentiels dans les bases de données relationnelles qui permettent d’automatiser des actions lorsqu’un événement spécifique survient. L’objectif de cette section est de vous permettre de comprendre le rôle des déclencheurs, de connaître leurs caractéristiques principales, et de découvrir les différents types de déclencheurs existants, ainsi que leur utilisation. En maîtrisant les déclencheurs, vous serez capable de définir des règles personnalisées pour assurer la cohérence et l’intégrité des données, tout en automatisant certaines tâches répétitives dans votre base de données.
Un déclencheur est un objet spécifique de la base de données qui exécute automatiquement une action lorsqu’un événement, tel qu’une insertion, une mise à jour, ou une suppression, survient sur une table ou une vue. Il s’agit d’une sorte de « surveillance » active des modifications dans la base de données. Par exemple, vous pouvez utiliser un déclencheur pour enregistrer l’historique des modifications sur une table ou pour empêcher certains changements qui pourraient violer les règles de gestion de votre application.
Avantages des déclencheurs en BDD
Les déclencheurs offrent divers avantages, notamment :
- Ajout de contraintes personnalisées :En utilisant des déclencheurs, vous pouvez imposer des règles spécifiques sur les valeurs des colonnes d’une table qui ne sont pas gérables directement par les contraintes standard (comme les contraintes CHECK ou UNIQUE). Par exemple, vous pourriez restreindre les valeurs d’un champ en fonction de calculs complexes ou de conditions spécifiques.
- Audit des données :Les déclencheurs peuvent être utilisés pour enregistrer l’historique des modifications apportées aux données, ce qui est essentiel pour les applications nécessitant une traçabilité des changements. Vous pouvez, par exemple, créer un journal de log pour chaque modification apportée à une table critique.
- Implémentation des règles de gestion :Ils permettent d’automatiser des règles métiers spécifiques, réduisant ainsi la charge de travail manuel et minimisant les risques d’erreur. Par exemple, vous pouvez déclencher une vérification automatique des stocks avant l’ajout d’une commande.
- Publication d’informations :Vous pouvez également utiliser des déclencheurs pour notifier d’autres systèmes ou envoyer des alertes lorsqu’un événement important survient dans la base de données, comme une tentative de suppression non autorisée.
Niveaux d'exécution des déclencheurs BDD
Les déclencheurs peuvent être configurés pour s’exécuter à différents niveaux :
Déclencheur au niveau de la table (STATEMENT) :
- Ce type de déclencheur s’exécute une seule fois, quelle que soit la quantité de lignes affectées par l’opération. Il est particulièrement utile lorsque vous avez besoin d’appliquer une règle ou une action globale pour une opération.
Déclencheur au niveau de l’enregistrement (ROW) :
- Ce déclencheur est exécuté pour chaque ligne individuellement lorsque l’événement spécifié se produit. Si vous modifiez plusieurs lignes, le déclencheur s’exécutera pour chacune d’elles. Pour ce type de déclencheur, vous devez utiliser la clause FOR EACH ROW.
Types de déclencheurs en bases de données
Il existe plusieurs types de déclencheurs, chacun avec ses particularités :
Type de Déclencheur | Description | Événements | Niveau |
---|---|---|---|
Déclencheurs LMD | Se déclenchent avant ou après une opération de manipulation des données (INSERT, UPDATE, DELETE). | INSERT, UPDATE, DELETE | Table ou Enregistrement (ROW) |
Déclencheurs INSTEAD OF | Exécutés à la place de l’instruction qui a déclenché le déclencheur ; utilisés principalement avec des vues pour permettre des modifications sur des vues non modifiables directement. | INSERT, UPDATE, DELETE | Enregistrement (ROW) |
Déclencheurs Système | Se déclenchent en réponse à des événements système (par exemple, démarrage/arrêt de la base, connexion/déconnexion des utilisateurs). | Connexion, Démarrage, Création d’objets DDL | Niveau Système |
Ce tableau permet de comparer les différents types de déclencheurs selon leurs caractéristiques principales et leurs usages courants.
Créer un déclencheur en BDD : Syntaxe
Pour créer un déclencheur, vous pouvez utiliser la syntaxe suivante :
CREATE [ OR REPLACE ] TRIGGER
{ BEFORE | AFTER | INSTEAD OF } [ ]
[ REFERENCING { OLD AS | NEW AS } ]
[ FOR EACH ROW ]
[ WHEN (condition) ]
DECLARE
-- Variables et constantes locales
BEGIN
-- Actions à exécuter lorsque le déclencheur se déclenche
EXCEPTION
-- Gestion des exceptions
END [ ];
- BEFORE | AFTER | INSTEAD OF :Indique si le déclencheur doit se déclencher avant, après, ou à la place de l’événement.
- <nom_evenement> :Spécifie l’événement qui déclenche le déclencheur (INSERT, UPDATE, DELETE).
- FOR EACH ROW :Optionnel pour les déclencheurs au niveau ligne, exécuté pour chaque ligne affectée.
- WHEN :Condition facultative pour restreindre l’exécution du déclencheur en fonction de critères particuliers.
Exemple pratique de déclencheur BDD
Imaginons que vous souhaitiez créer un déclencheur pour vérifier, avant une insertion ou une mise à jour, que la commission d’un salarié ne dépasse pas son salaire. Voici un exemple de déclencheur qui répond à cette exigence :
CREATE OR REPLACE TRIGGER check_commission_before_insert_update
BEFORE INSERT OR UPDATE ON salaries
FOR EACH ROW
WHEN (NEW.comission IS NOT NULL)
DECLARE
salaire_insuffisant EXCEPTION;
BEGIN
-- Vérifie si la commission dépasse le salaire
IF :NEW.comission > :NEW.salaire THEN
RAISE salaire_insuffisant;
END IF;
EXCEPTION
WHEN salaire_insuffisant THEN
DBMS_OUTPUT.PUT_LINE('Erreur : La commission ne peut pas dépasser le salaire.');
END;
Dans cet exemple :
- Le déclencheur se déclenche avant toute tentative d’insertion ou de mise à jour dans la table salaries.
- Il vérifie que la valeur de comission ne dépasse pas celle de salaire. Si cette condition n’est pas respectée, une exception personnalisée est levée.
Formez-vous gratuitement avec Alphorm !
Maîtrisez les compétences clés en IT grâce à nos formations gratuites et accélérez votre carrière dès aujourd'hui.
FAQ
Qu'est-ce qu'un déclencheur en base de données ?
Quels sont les avantages des déclencheurs ?
Quels sont les différents types de déclencheurs ?
Comment créer un déclencheur en SQL ?
Quelle est la syntaxe d'un déclencheur SQL ?
Conclusion
En explorant les déclencheurs, vous pouvez améliorer significativement la gestion de vos bases de données en automatisant des tâches répétitives. Quels autres aspects de la gestion des bases de données pourriez-vous optimiser grâce à l’automatisation ?