Message d'erreur lors de l'utilisation d'un trigger
Bonjour,
Le trigger :
Code:
1 2 3 4 5 6 7 8 9
| CREATE TRIGGER del_pers BEFORE INSERT
ON routage_pers_tmp
FOR EACH ROW
BEGIN
IF ((SELECT COUNT(A.NUM_CARTE) FROM adherent A WHERE A.NUM_CARTE=NEW.NUM_CARTE)=0)
THEN
INSERT INTO routage_pers_tmp SELECT NEW.*;
END IF;
END; |
Si le NUM_CARTE de la ligne qu'on tente d'insérer dans routage_pers_tmp n'est pas dans la table adherent, on l'insère.
Le trigger se crée correctement.
Mais lors de l'exécution :
==> erreur mysql :
Citation:
Can't update table 'routage_pers_tmp1' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
2ème tentative :
Code:
1 2 3 4 5 6 7 8 9
| CREATE TRIGGER del_pers BEFORE INSERT
ON routage_pers_tmp1
FOR EACH ROW
BEGIN
IF ((SELECT COUNT(A.NUM_CARTE) FROM adherent A WHERE A.NUM_CARTE=NEW.NUM_CARTE)=0)
THEN
INSERT INTO routage_pers_tmp2 SELECT NEW.* FROM routage_pers_tmp1;
END IF;
END; |
==> UNknown table NEW.:(
Merci de votre aide ...
Message d'erreur lors de l'utilisation d'un trigger
Merci pour la réponse.
J'ai modifié le code pour satisfaire phpmyadmin :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
CREATE TRIGGER del_pers BEFORE INSERT
ON routage_pers_tmp
FOR EACH ROW
begin
declare t boolean;
SELECT COUNT(A.NUM_CARTE)>0 into t
FROM adherent A
WHERE A.NUM_CARTE=NEW.NUM_CARTE;
if t then
select true; -- déclenchera une erreur et donc l'annulation de l'insertion
end if;
end$$ |
Maintenant code d'erreur :
Not allowed to return a result set from a trigger
merci