2. Définition
“ Un déclencheur est un objet de base de
données nommé, qui est associé à une table et
qui s'active lorsqu'un événement particulier
survient dans une table ”
3. Définition - 2
Un Trigger est un bloc d'instructions SQL :
Il est rattaché à une seule table
Il réagit à 3 événements : INSERT, UPDATE,
DELETE
Il s'exécute soit avant soit après un des ces
événements
L'accession aux données modifiées via les
événements est possible avec les mots-clés New.
nom_colonne ou OLD.nom_colonne
Une table peut avoir 6 triggers Maximum
4. Création d'un Trigger
CREATE TRIGGER nom_trigger(1)
{ BEFORE | AFTER }
{ INSERT | UPDATE | DELETE }
ON nom_table(2)
FOR EACH ROW
requête_SQL(3)
1. Nom donné au Trigger, il lui sert d'identifiant
2. Nom de la table pour laquelle le trigger est affecté
3. La requête SQL à exécuter lors de l'activation du Trigger
5. Quand doit-on les utiliser ?
Les triggers sont souvent utilisés pour :
Créer des rapports d'audit sur l'utilisation de la BDD
Palier aux manques de certains moteurs de stockage
(Intégrité référentielle)
Accroître la sécurité des données
6. Création d'une « poubelle »
Objectif : Créer un trigger interceptant toutes les données
supprimées pour les mettre dans une table « poubelle »
afin d'éviter les suppression accidentelles.
Importer la base de données « world »
Créer la table deleted_city
Affecter à la table City le trigger nommé city_AD :
Utiliser l'événement DELETE
Le trigger sera invoqué ... après ... l'instruction DELETE
7. Création d'un système d'audit
Objectif : Créer un trigger permettant de compter le nombre
de requêtes d'ajout, de mise à jour et de suppression
effectués par jour
Créer la table audit_city
Affecter à la table City les triggers suivant:
audit_city_AI (Evén. : INSERT, PE : AFTER)
audit_city_AD (Evén. : DELETE, PE : AFTER)
audit_city_AU (Evén. : UPDATE, PE : AFTER)
8. Emulation Intégrité Référentielle
Objectif : Créer un trigger permettant de vérifier si avant
d'ajouter une ville, elle fait référence à un pays existant
dans la table Country
Affecter à la table City le trigger verif_country_BI (Evén. :
INSERT, PE : BEFORE)
Adopter la notation pour un trigger comportant plusieurs
instructions SQL