Vous êtes sur la page 1sur 5

LES DECLENCHEURS

CHAPITRE VI : LES DECLENCHEURS

D’un point de vue général et sans parler de MySQL, la plupart des déclencheurs (triggers)
peuvent être vus comme des sous-programmes résidents associés à un événement particulier
(insertion, modification d’une ou de plusieurs colonnes, suppression) sur une table (ou une
vue). Une table (ou vue) peut « héberger » plusieurs déclencheurs ou aucun.

A quoi sert un déclencheur ?

 Programmer toutes les règles de gestion qui n’ont pas pu être mises en place par des
contraintes au niveau des tables. Déporter des contraintes au niveau du serveur et
alléger ainsi la programmation client.
 Renforcer des aspects de sécurité et d’audit.
 Programmer l’intégrité référentielle et la réplication dans des architectures distribuées,
avec l’utilisation de liens de bases de données.

En théorie, les événements déclencheurs peuvent être :

 Une instruction INSERT, UPDATE, ou DELETE sur une table (ou vue). On parle de
déclencheurs LMD ;
 Une instruction CREATE, ALTER, ou DROP sur un objet (table, vue, etc.). On
parle de déclencheurs LDD ;

En pratique, dans MySQL, seuls les événements de la première catégorie sont pris en
compte.

Figure1 : Mécanisme des déclencheurs

1
LES DECLENCHEURS

VI.1. LES TRIGGERS

VI.1.1. Syntaxe

Un déclencheur est composé de deux parties : la description de l’événement traqué et celle de


l’action à réaliser lorsque l’événement se produit. La syntaxe de création d’un déclencheur est
la suivante :

Les options de cette commande sont les suivantes :

1. BEFORE| AFTER précise la chronologie entre l’action à réaliser par le déclencheur


LMD et la réalisation de l’événement (BEFORE INSERT exécutera le déclencheur
avant de réaliser l’insertion).
2. DELETE| INSERT| UPDATE précise la nature de l’événement pour les
déclencheurs LMD.
 Pour DELETE, le déclencheur examine les événements DELETE et
REPLACE.
 Pour INSERT, le déclencheur prend en compte les événements suivants :
INSERT, CREATE...
 Pour UPDATE, le déclencheur considère seulement l’événement UPDATE.
3. ON nomTable spécifie la table associée au déclencheur LMD.
4. FOR EACH ROW différencie les déclencheurs LMD au niveau ligne (le niveau état
n’est pas encore pris en charge).
5. Instruction ou instructions compose le corps du code du déclencheur.

VI.1.2. Quand utiliser la directive OLD ?

Chaque enregistrement qui tente d’être supprimé d’une table, qui inclut un déclencheur de type
DELETE FOR EACH ROW, est désigné par OLD au niveau du code du déclencheur.

L’accès aux colonnes de ce pseudo-enregistrement dans le corps du déclencheur se fait par la


notation pointée.

2
LES DECLENCHEURS

VI.1.3. Quand utiliser la directive NEW ?

Chaque enregistrement qui tente d’être ajouté dans une table est désigné par NEW au niveau
du code du déclencheur. L’accès aux colonnes de ce pseudo-enregistrement dans le corps du
déclencheur se fait par la notation pointée.

Exemple : Ecrire un trigger qui permet d’insérer une capacité de 30 lorsque la capacité de la
est inférieure 30.

VI.1.4. requête sur les triggers

 Show triggers : Montre les différents trigger crée dans notre BD en cours. 
Drop trigger nom_trigger : Permet de supprimer un trigger

VI.2. LES PROCEDURES STOCKEES

Une procédure stockée (ou stored procedure en anglais) est un ensemble d'instructions SQL
précompilées, stockées dans une base de données et exécutées sur demande par le SGBD qui
manipule la base de données.

3
LES DECLENCHEURS

VI.2.1. Exemple de création d’une procédure stockée

VI.2.2. Exemple d’exécution d’une procédure stockée

4
LES DECLENCHEURS

VI.2.3. Liste des procédures stockées enregistrée dans la base de données

III.2.4. Suppression d’une procédure stockée

Vous aimerez peut-être aussi