Les triggers

Les triggers (déclencheurs en français) ressemblent aux procédures stockées car ils sont eux aussi compilés et enregistrés dans la base et ils sont le plus souvent écrits dans le même langage. La différence est que leur exécution est déclenchée automatiquement par des événements liés à des actions sur la base. Les événements déclencheurs peuvent être les commandes LMD insert, update, delete.

Syntaxe de création d'un trigger

    CREATE
    TRIGGER `event_name` BEFORE-AFTER INSERT-UPDATE-DELETE
    ON `database`.`table`
    FOR EACH ROW BEGIN
		-- trigger body
		-- this code is applied to every 
		-- inserted-updated-deleted row
    END;

Exercice 1

Pré-requis : vous devez avoir une base de données avec une table contrat dans MySQL

Contrat(no, tarif)
no: clé primaire auto-incrémenté

Créer un trigger promotion qui enlève 200 euros à chaque insertion d'un contrat dans la table contrat. Faire le test pour s'assurer que le trigger fonctionne.

Exercice 2

Créer la table logContat.

logContrat(id, tarif, date)
id: clé primaire

La table logContrat est une table qui va servir à garder la trace de toutes les nouvelles insertions dans la table contrat.

Créer un trigger qui à chaque insertion d'un nouveau contrat ajoute une ligne à la table logContrat. La date correspond au jour et à l'heure de l'insertion.

Vous pouvez créer les triggers avec phpMyAdmin, c'est beaucoup plus simple.