🛢️Parcours Fioul GroupéMySQL · Chapitre 10
Accueil › MySQL › Chapitre 10
Chapitre 10 / 16

Les déclencheurs et les événements

Faire réagir la base automatiquement : un déclencheur (trigger) se déclenche lors d'une écriture ; un événement s'exécute à intervalle régulier, comme un cron interne.

1 Notion

Les déclencheurs

Un trigger s'exécute BEFORE ou AFTER un INSERT/UPDATE/DELETE. Les pseudo-lignes NEW et OLD donnent accès aux données.

DELIMITER $$
CREATE TRIGGER trg_litres_positifs
BEFORE INSERT ON commande
FOR EACH ROW
BEGIN
  IF NEW.litres < 0 THEN SET NEW.litres = 0; END IF;
END $$
DELIMITER ;
OpérationOLDNEW
INSERT—disponible
UPDATEanciennenouvelle
DELETEdisponible—
2 Exemple

Un trigger d'audit

DELIMITER $$
CREATE TRIGGER trg_commande_suppr
AFTER DELETE ON commande
FOR EACH ROW
BEGIN
  INSERT INTO journal (table_cible, cle, action, le)
  VALUES ('commande', OLD.id, 'DELETE', NOW());
END $$
DELIMITER ;
Effets de bord invisibles — un trigger agit en coulisse et complique le débogage. Documentez-les ; n'y cachez pas de logique métier essentielle.
3 Notion

Les événements planifiés

Un événement exécute du SQL selon une planification (il faut activer le planificateur).

SET GLOBAL event_scheduler = ON;

CREATE EVENT ev_cloture_auto
ON SCHEDULE EVERY 1 DAY
DO
  UPDATE campagne SET statut = 'CLOTUREE'
  WHERE statut = 'OUVERTE' AND date_cloture < CURDATE();
🛢️ Sur le projet Fioul Groupé

Deux automatismes utiles au projet : un trigger qui refuse un volume négatif à l'inscription, et un événement quotidien qui clôture automatiquement les campagnes dont la date limite est passée — sans dépendre d'un cron externe.

À retenir
← Chapitre 09