Salut, c'est mon tout premier message sur ce fofo alors qu'il m'aide quasiment au quotidien depuis 2ans ^^. Je suis en prépa IG Analyste Programmeur et je réalise actuellement mon stage de 2eme année.
Alors voici mon problème, j'essaye de créer un trigger before insert sur une bdd mysql, seulement je cherche à annuler l'insertion selon tel ou tel cas.
J'ai lu par ci par la qu'on pouvait utiliser return false (apparemment ça ne marche pas) ou RAISERROR (c'est ce que j'ai laissé ici) pour stopper l'insert.
Voici mon trigger, j'ai vérifié les requêtes au cas où il y aurait une erreur sur les noms de champ, ça ne vient pas de là.
<code>
Delimiter |
Create trigger insert_marche BEFORE INSERT ON marché FOR EACH ROW
BEGIN
If (NEW.IDpdv <>NULL and NEW.IDagence=NULL and NEW.IDportefeuille=NULL) or (NEW.IDpdv=NULL and NEW.IDagence<>NULL and NEW.IDportefeuille=NULL) or (NEW.IDpdv =NULL and NEW.IDagence=NULL and NEW.IDportefeuille<>NULL) then
BEGIN
DECLARE num_agence varchar(5);
Select IDagence FROM pointdevente Where IDagence=NEW.IDagence INTO num_agence;
IF num_agence <> NULL THEN
RAISERROR
;
Else
BEGIN
Select IDagence FROM portefeuille Where IDagence=NEW.IDagence INTO num_agence;
IF num_agence <> NULL THEN
RAISERROR;
Else
Insert into marché(IDagence,IDportefeuille,IDpdv,nommarche) values (NEW.IDagence, NEW.IDportefeuille, NEW.IDpdv, NEW.nommarche) ;
END ;
END ;
Else
RAISERROR;
END|
</code>
voilà l'erreur se produit au niveau du soulignement.
merci d'avance.