Partie II
Programmation procédurale
266
© Éditions Eyrolles
L’événement déclencheur est ici AFTER DELETE, car il faudra s’assurer que la suppression
n’est pas entravée par d’éventuelles contraintes référentielles. On utilise un déclencheur FOR
EACH ROW, car s’il se produit une suppression de toute la table (DELETE FROM Qualifications;), on exécutera autant de fois le déclencheur qu’il y a de lignes détruites.
Chaque enregistrement qui va être supprimé de la table Qualifications 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.
Le code minimal de ce déclencheur (on ne prend pas en compte le fait qu’il n’existe pas de
pilote de ce code brevet) est décrit dans le tableau suivant :
En considérant les données initiales des tables, le test de ce déclencheur sous l’interface de
commande est le suivant. Par ailleurs, la table Qualifications ne contient plus que trois
enregistrements.
Figure 7-7 Principe du déclencheur TrigDelQualif
BREVET
TYPA
EXPIRE
--------- -------PL - 1
A340 22/06/05
PL - 1
A330 05/02/05
PL - 1
A320 16/01/04
PL - 2
A320 18/01/04
PL - 3
A330 22/01/06
TypeAvion
TYPA
NOMTYPE
--- - -------------------------A320 Biréacteur Airbus 320
A330 Biréacteur Airbus 330
A340 Quadriréacteur Airbus 340
Pilote
BREVET NOM
NBHVOL
COMP NBQUALIF
---------Déclencheur
TrigDelQualif
1
2
- 1
3
OLD
DELETE
PL-1
P. Caboche
450 AF
3
PL-2
G. Lebur
3400 AF
1
PL-3
X. Leclercq
900 SING
1
Qualifications
A380 Big-Quadriréacteur 380
Tableau 7-18 Déclencheur après suppression
Code MySQL
Commentaires
Déclaration de l’événement déclencheur.
BEGIN
UPDATE Pilote SET nbQualif = nbQualif - 1
WHERE brevet =
;
END;
Corps du déclencheur.
Mise à jour du pilote concerné par la
suppression.
Web
CREATE TRIGGER TriDelQualif
AFTER DELETE ON Qualifications
FOR EACH ROW
OLD.brevet
Précédent

- 288/418

Suivant