© Éditions Eyrolles
267
chapitre n° 7
Programmation avancée
Quand utiliser la directive NEW ?
Chaque enregistrement qui tente d’être ajouté dans la table Qualifications 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.
Considérons le même exemple et écrivons la règle de gestion tout pilote qui gagne une qualification doit voir son compteur automatiquement incrémenter. Programmons le déclencheur
TrigInsQualif qui surveille les insertions sur la table Qualifications et augmente de
un la colonne nbQualif pour le pilote concerné.
L’événement déclencheur est ici AFTER INSERT, car il faudra s’assurer, avant de faire
l’insertion, que le code du pilote et celui de l’avion sont corrects (existant dans les tables
« père »). On utilise un déclencheur FOR EACH ROW car on désire qu’il s’exécute autant de
fois qu’il y a de lignes concernées par l’événement déclencheur.
Le code minimal de ce déclencheur (on ne prend en compte aucune erreur potentielle) est
décrit dans le tableau suivant :
Tableau 7-19 Test du déclencheur AFTER DELETE
Événement déclencheur
Résultat
DELETE FROM Qualifications
WHERE typa = 'A320';
SELECT * FROM Pilote;
+--------+-------------+---------+-------+----------+
| brevet | nom
| nbHVol | compa | nbQualif |
+--------+-------------+---------+-------+----------+
| PL-1
| P. Caboche | 450.00 | AF
|
|
| PL-2
| G. Lebur
| 3400.00 | AF
|
|
| PL-3
| X. Leclercq | 900.00 | SING |
1 |
+--------+-------------+---------+-------+----------+
Figure 7-8 Principe du déclencheur TrigInsQualif
2
0
Qualifications
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
A380 Big -Qua driréacteur 380
Pilote
BREVET NOM
NBHVOL
COMP
NBQUALIF
------ -------------------- ---------- ---- ---------PL-1
P. C aboche
450 AF
3
PL-2
G. Lebur
3400 AF
1
PL-3
X. Leclercq
900 SING
1
Déclencheur
TrigInsQualif
PL -2 A380
20/06/06
INSERT
1
2
+1
3
NEW
267
chapitre n° 7
Programmation avancée
Quand utiliser la directive NEW ?
Chaque enregistrement qui tente d’être ajouté dans la table Qualifications 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.
Considérons le même exemple et écrivons la règle de gestion tout pilote qui gagne une qualification doit voir son compteur automatiquement incrémenter. Programmons le déclencheur
TrigInsQualif qui surveille les insertions sur la table Qualifications et augmente de
un la colonne nbQualif pour le pilote concerné.
L’événement déclencheur est ici AFTER INSERT, car il faudra s’assurer, avant de faire
l’insertion, que le code du pilote et celui de l’avion sont corrects (existant dans les tables
« père »). On utilise un déclencheur FOR EACH ROW car on désire qu’il s’exécute autant de
fois qu’il y a de lignes concernées par l’événement déclencheur.
Le code minimal de ce déclencheur (on ne prend en compte aucune erreur potentielle) est
décrit dans le tableau suivant :
Tableau 7-19 Test du déclencheur AFTER DELETE
Événement déclencheur
Résultat
DELETE FROM Qualifications
WHERE typa = 'A320';
SELECT * FROM Pilote;
+--------+-------------+---------+-------+----------+
| brevet | nom
| nbHVol | compa | nbQualif |
+--------+-------------+---------+-------+----------+
| PL-1
| P. Caboche | 450.00 | AF
|
|
| PL-2
| G. Lebur
| 3400.00 | AF
|
|
| PL-3
| X. Leclercq | 900.00 | SING |
1 |
+--------+-------------+---------+-------+----------+
Figure 7-8 Principe du déclencheur TrigInsQualif
2
0
Qualifications
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
A380 Big -Qua driréacteur 380
Pilote
BREVET NOM
NBHVOL
COMP
NBQUALIF
------ -------------------- ---------- ---- ---------PL-1
P. C aboche
450 AF
3
PL-2
G. Lebur
3400 AF
1
PL-3
X. Leclercq
900 SING
1
Déclencheur
TrigInsQualif
PL -2 A380
20/06/06
INSERT
1
2
+1
3
NEW
