Lernzettel: Introduction aux déclencheurs en PL/SQL

1. 📌 L'essentiel

  • Les triggers sont des blocs PL/SQL s'exécutant automatiquement en réponse à des événements dans la base.
  • Ils interviennent pour garantir l'intégrité, la sécurité, l'audit, la réplication ou la génération d'événements.
  • Se déclenchent lors d'opérations DML, UPDATE, DELETE) ou DDL (CREATE, ALTER, DROP).
  • Deux types principaux : déclencheurs de base de données (implicites) et applicatifs (non abordés ici).
  • Se différencient en déclencheurs de ligne (FOR EACH ROW) ou d'ordre (une seule exécution).
  • Synchronisation : BEFORE, AFTER, INSTEAD OF (pour vues).
  • Problème "mutating" : impossibilité d’accéder/modifier une table en mutation dans un trigger ligne.
  • Utilisations clés : sécurité, audit, contrôle, réplication, calculs dérivés.
  • La gestion passe par ALTER, DROP, recompilation.

2. 🧩 Structures & Composants clés

  • Trigger — Bloc PL/SQL associé à un événement spécifique.
  • Type :
    • Ligne (FOR EACH ROW) — s'exécute pour chaque ligne affectée.
    • Ordre — s'exécute une seule fois.
  • Synchronisation :
    • BEFORE — avant l'opération.
    • AFTER — après l'opération.
    • INSTEAD OF — en remplacement (pour vues).
  • Événements :
    • DML : INSERT, UPDATE [OF colonnes], DELETE.
    • DDL : CREATE, ALTER, DROP (non vu ici).
  • Condition : clause WHEN pour filtrer l'exécution.
  • Corps : bloc PL/SQL contenant la logique métier.

3. 🔬 Fonctions, Mécanismes & Relations

  • Les triggers s'activent automatiquement lors de l'événement.
  • La synchronisation BEFORE permet de valider ou modifier avant l'action.
  • AFTER sert à enregistrer ou faire des actions post-opération.
  • INSTEAD OF permet d'intervenir sur des vues complexes en remplaçant l'action.
  • La hiérarchie d'exécution :
    ├─ BEFORE ordre
    │    ├─ BEFORE ligne
    │    └─ (si ligne) déclenchements ligne
    ├─ déclenchements ligne
    │    └─ (si ligne) déclenchements ligne
    └─ AFTER ligne
         └─ AFTER ordre
    
  • Le problème "mutating" survient si un trigger ligne tente d’accéder/modifier la même table en mutation.
  • La solution : triggers séparés + tables temporaires ou variables PL/SQL.

4. Tableau comparatif des types de triggers

ÉlémentCaractéristiques clésNotes / Différences
TypesLigne (FOR EACH ROW) / Ordre (une seule exécution)Ligne : par ligne affectée ; Ordre : globale
SynchronisationBEFORE / AFTER / INSTEAD OFAvant, après, remplacement
ÉvénementsINSERT / UPDATE [OF colonnes] / DELETECombinaisons possibles
Condition (WHEN)Filtre conditionnel pour exécuter ou non le triggerUtilisé pour affiner l'exécution
CorpsBloc PL/SQLActions métier, vérifications, calculs

5. 🗂️ Diagramme hiérarchique ASCII

Déclencheur
 ├─ Type : Ligne ou Ordre
 │   ├─ Ligne
 │   │   └─ Exécute pour chaque ligne affectée
 │   └─ Ordre
 │       └─ Exécute une seule fois
 ├─ Synchronisation
 │   ├─ BEFORE
 │   ├─ AFTER
 │   └─ INSTEAD OF
 ├─ Événement
 │   ├─ INSERT
 │   ├─ UPDATE [OF colonnes]
 │   └─ DELETE
 └─ Corps : Bloc PL/SQL

6. ⚠️ Pièges & Confusions fréquentes

  • Confondre triggers de ligne et d’ordre : ligne s’exécute pour chaque ligne, ordre une seule fois.
  • Oublier la clause WHEN : peut entraîner exécutions non désirées.
  • Tenter d’accéder à une table en mutation dans un trigger ligne (problème "mutating").
  • Utiliser INSTEAD OF sur vues non autorisé pour DML sans triggers appropriés.
  • Ne pas gérer l’ordre d’exécution : BEFORE, puis AFTER, dans le bon ordre.
  • Oublier la gestion de activation/désactivation (ALTER TRIGGER).
  • Confondre trigger de sécurité, audit ou calculs : logique différente.
  • Négliger la recompilation ou la suppression (DROP).

7. ✅ Checklist Examen Final

  • Savoir définir un trigger avec syntaxe correcte.
  • Connaître les types : ligne vs ordre.
  • Maîtriser la différence BEFORE, AFTER, INSTEAD OF.
  • Comprendre le problème "mutating" et ses solutions.
  • Savoir utiliser la clause WHEN.
  • Connaître les événements déclencheurs (INSERT, UPDATE, DELETE).
  • Savoir activer/désactiver un trigger.
  • Connaître la gestion de recompilation et suppression.
  • Identifier les cas d’usage : sécurité, audit, contrôle, réplication.
  • Comprendre le fonctionnement des triggers sur vues (INSTEAD OF).
  • Savoir gérer l’ordre d’exécution dans une famille de triggers.
  • Connaître les dictionnaires d’objets liés aux triggers.
  • Être capable d’écrire un trigger simple pour contrôle ou audit.
  • Identifier le problème "mutating" et ses solutions.
  • Savoir utiliser tables temporaires ou variables pour contourner "mutating".
  • Reconnaître un trigger de sécurité ou de calcul dans un contexte d’examen.

Fin de la fiche. Bonne révision !

Teste dein Wissen

Teste dein Wissen zu Introduction aux déclencheurs en PL/SQL mit 9 Multiple-Choice-Fragen mit detaillierten Korrekturen.

1. Quel est le principal rôle d'un déclencheur (trigger) dans une base de données ?

2. Quel est le rôle principal des triggers en PL/SQL ?

Quiz machen →

Mit Karteikarten lernen

Merke dir die Schlüsselkonzepte von Introduction aux déclencheurs en PL/SQL mit 10 interaktiven Karteikarten.

Déclencheur — définition ?

Bloc PL/SQL s'exécutant automatiquement en réponse à un événement.

Triggers — définition?

Blocs PL/SQL s'exécutant automatiquement en réponse à des événements.

Type de trigger — ligne ?

S'exécute pour chaque ligne affectée.

Karteikarten ansehen →

Similar courses

Erstelle deine eigenen Lernzettel

Importiere deinen Kurs und die KI erstellt in 30 Sekunden Lernzettel, Quizze und Karteikarten.

Lernzettel-Generator