Triggers
PostgreSQL 🟡 MidDéfinition
Fonctions exécutées automatiquement en réponse a un evenement (INSERT, UPDATE, DELETE) sur une table. Peuvent être BEFORE ou AFTER et opèrent par ligne (FOR EACH ROW) ou par instruction.
Analogie
Un détecteur de mouvement qui déclenche automatiquement une alarme quand quelqu'un entre.
Exemple de code
CREATE FUNCTION update_timestamp()
RETURNS trigger AS $$
BEGIN
NEW.updated_at = NOW();
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
CREATE TRIGGER set_timestamp
BEFORE UPDATE ON users
FOR EACH ROW EXECUTE FUNCTION update_timestamp();
Cas d'usage
Mettre a jour automatiquement un timestamp, maintenir un audit log ou propager des modifications.
Anti-pattern
Termes liés
En entretien
Explique-moi ce qu'est un trigger et donne un exemple d'usage.
Un trigger est une fonction exécutée automatiquement en réponse à un événement comme INSERT, UPDATE ou DELETE, comme un détecteur de mouvement qui déclenche une alarme. On l'utilise par exemple pour mettre à jour automatiquement un timestamp ou maintenir un audit log.
Quel piège faut-il éviter avec les triggers ?
Il faut éviter de créer des cascades de triggers qui se déclenchent mutuellement, ce qui rend le flux imprévisible. Ça complique fortement le débogage quand plusieurs triggers s'enchaînent sans qu'on le voie dans le code applicatif.
Quelle différence entre BEFORE/AFTER et FOR EACH ROW dans la définition d'un trigger ?
BEFORE ou AFTER définissent quand le trigger se déclenche par rapport à l'événement, tandis que FOR EACH ROW précise qu'il s'exécute pour chaque ligne modifiée plutôt qu'une seule fois par instruction. L'exemple de mise à jour du timestamp utilise justement BEFORE UPDATE ... FOR EACH ROW.
Fiche mise à jour le 2026-09-27