Click here to load reader
Upload
rouff-joseph
View
7.775
Download
2
Embed Size (px)
Citation preview
Les triggers avec MySQLPar Joseph ROUFF
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 ”
Définition - 2Un Trigger est un bloc d'instructions SQL :
Il est rattaché à une seule table Il réagit à 3 événements : INSERT, UPDATE, DELETEIl s'exécute soit avant soit après un des ces événementsL'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
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
Quand doit-on les utiliser ?
Les triggers sont souvent utilisés pour :Créer des rapports d'audit sur l'utilisation de la BDDPalier aux manques de certains moteurs de stockage (Intégrité référentielle)Accroître la sécurité des données
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_cityAffecter à la table City le trigger nommé city_AD :
Utiliser l'événement DELETELe trigger sera invoqué ... après ... l'instruction DELETE
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 jourCréer la table audit_cityAffecter à 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)
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