Probème du trigger mysql

Fermé
lamm - 7 mai 2010 à 14:21
 fiu - 7 mai 2010 à 18:26
Bonjour,
je veux créer un trigger en Mysql qui se déclenche avant l'insertion d'un enrengitrement dans la table commande et qui doit vérifier si le client auquel la nouvelle commande sera affectée existe déjà dans la table client .
Voici le code que j'ai pu faire :

CREATE TRIGGER testref BEFORE INSERT ON commande
FOR EACH ROW BEGIN

if exists(select id from client where id=NEW.id)
begin
insert into commande(idclt) values(NEW.id);
end
end

Mais l'execution me renvois une erreur .
pourriez vous me le corriger svp ??!
Merci d'avance

1 réponse

Salut

Je connais pas trop MySQL mais...
le fait que tu aies une erreur dois venir de ce que tu cherches à insérer une ligne dans commande pendant le traitement de "Insertion d'une ligne dans commande".

Si MySQL te laissait faire sans rien dire, tu te retrouverais à insérer une ligne pendant le traitement de l'insertion d'une ligne, elle-même provoquée par l'insertion d'une ligne, elle-même provoquée par l'insertion d'une ligne, etc

En fait, tu dois utiliser ton trigger (qui ici a un role de vérification) pour déclencher une erreur, une exception ou n'importe quoi qui interrompe l'exécution de l'insertion si ta ou tes conditions ne sont pas vérifiées. par contre, tu ne fais rien de spécial si ta vérification est couronnée de succès : l'exécution de ton insert se poursuivra alors tranquillement
0