Question trigger pour tester une ancienne valeur
Bonjour,
je cherche un moyen de faire un trigger qui va vérifier une valeur contenue dans une table avant de valider un INSERT.
Dans mon exercice j'ai une colonne contenant ID_Fonction dans ma table Employe.
Un employé ne peut occuper qu'une fonction donc le but du trigger est de valider l'opération ou la refuser si on veut faire un INSERT dans la colonne ID_Fonction.
Bien que ma colonne ne puisse contenir qu'une valeur, je voudrais quand même résoudre ce problème par un trigger.
Donc pour le moment j'ai:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
|
DROP TRIGGER IF EXISTS t_before_insert;
DELIMITER |
CREATE TRIGGER t_before_insert
BEFORE INSERT
ON Employe
FOR EACH ROW
BEGIN
IF NEW.ID_Fonction IS NOT NULL
THEN INSERT INTO Erreur VALUES ('Occupe déjà une fonction'); -- L'erreur est dans une table erreur avec un champ unique
END IF;
END|
DELIMITER ; |
Avec ce trigger lors d'un INSERT d'une valeur, si la valeur est NULL je reçois ce msg: Error Code: 1136. Column count doesn't match value count at row 1
En fait, lorsque je regarde le trigger, la valeur NEW.ID_Foncion n'est pas NULL ce qui est logique mais comment tester si l'ancienne valeur était différence de NULL?
Merci pour votre aide
Ersch