Partie II
Programmation procédurale
270
© Éditions Eyrolles
Bilan de NEW et OLD
Le tableau suivant résume les valeurs contenues dans les pseudo-enregistrements OLD et NEW
pour les déclencheurs FOR EACH ROW. Retenez que seuls les déclencheurs UPDATE peuvent
manipuler à bon escient les deux types de directives.
MySQL prévient clairement, à la compilation, que vous utilisez une variable OLD dans un
déclencheur INSERT – ou NEW dans un déclencheur DELETE – par deux messages de même
code, mais de libellés différents, suivant les cas :
q
ERROR 1363 (HY000): There is no NEW row in on DELETE trigger
q
ERROR 1363 (HY000): There is no OLD row in on INSERT trigger
Une colonne préfixée de OLD est en lecture seule dans le corps d’un déclencheur.
Une colonne préfixée de NEW ne peut être accessible qu’à l’aide du privilège SELECT associé.
Tableau 7-23 Test du déclencheur AFTER UPDATE
Événement déclencheur
Résultat
UPDATE Qualifications
SET brevet = 'PL-2'
WHERE brevet = 'PL-3'
AND typa = 'A330'$
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 |
0 |
+--------+-------------+---------+-------+----------+
SELECT * FROM Qualifications$
+--------+------+------------+
| brevet | typa | expire
|
+--------+------+------------+
| PL-1
| A340 | 2005-06-22 |
| PL-1
| A330 | 2005-02-05 |
| PL-1
| A320 | 2004-01-16 |
| PL-2
| A320 | 2004-01-18 |
|
| A330 | 2006-01-22 |
+--------+------+------------+
3
2
PL-2
Tableau 7-24 Valeurs de OLD et NEW
Nature de l’événement
OLD.colonne
NEW.colonne
INSERT
Impossible.
Nouvelle valeur.
UPDATE
Ancienne valeur.
Nouvelle valeur.
DELETE
Ancienne valeur.
Impossible.
Précédent

- 292/418

Suivant