Dans notre table Animal se trouve la colonne sexe. Cette colonne accepte tout caractère, ou NULL. Or, seuls les caractères "M"
et "F" ont du sens. Nous allons donc créer deux triggers, un pour l'insertion, l'autre pour la modification, qui vont empêcher
qu'on donne un autre caractère que "M" ou "F" pour sexe.
Ces deux triggers devront se déclencher avant l'insertion et la modification. On aura donc :
Code : SQL
-- Trigger déclenché par l'insertion
DELIMITER |
CREATE TRIGGER before_insert_animal BEFORE INSERT
ON Animal FOR EACH ROW
BEGIN
-- Instructions
END |
-- Trigger déclenché par la modification
CREATE TRIGGER before_update_animal BEFORE UPDATE
ON Animal FOR EACH ROW
BEGIN
-- Instructions
END |
DELIMITER ;
Il ne reste plus qu'à écrire le code du trigger, qui sera similaire pour les deux triggers. Et comme ce corps contiendra des
instructions, il ne faut pas oublier de changer le délimiteur.
Le corps consistera en une simple structure conditionnelle, et définira un comportement à adopter si le sexe donné ne vaut ni
"M", ni "F", ni NULL.
Quel comportement adopter en cas de valeur erronée ?
Deux possibilités :
on modifie la valeur du sexe, en le mettant à NULL par exemple ;
on provoque une erreur, ce qui empêchera l'insertion/la modification.
Commençons par le plus simple : mettre le sexe à NULL.
Code : SQL
DELIMITER |
CREATE TRIGGER before_update_animal BEFORE UPDATE
ON Animal FOR EACH ROW
BEGIN
IF NEW.sexe IS NOT NULL
-- le sexe n'est ni NULL
AND NEW.sexe != 'M'
-- ni "M"
AND NEW.sexe != 'F'
-- ni "F"
THEN
SET NEW.sexe = NULL;
END IF;
END |
DELIMITER ;
Test :
Code : SQL
UPDATE Animal
Partie 5 : Sécuriser et automatiser ses actions
314/414
www.openclassrooms.com
Précédent

- 314/413

Suivant