Comment faire un trigger avec des IF THEN ALSE ?

- - Dernière réponse :  TSHITOS - 12 sept. 2019 à 16:23
Bonjour à tous !
je travail sur un petit projet de gestion de stock avec PHP/Mysql et je me trouve dans le besoin de créer un triggeur un peu complexe, j'aimerai qu'à chaque entrée des données dans la table "ENTREE" qu'on puisse vérifier si l'article entré en stock se trouve déjà dans la table stock(en vérifiant l’existence de son du code article), si non, faire un INSERT dans la table "STOCK", si le nom de l'article de trouve déjà faire un UPDATE dans la table "STOCK" modifiant juste la quantité, voici ce que je pense faire si quelqu'un peu m'aider puisque ca ne marche pas!:

CREATE TRIGGER entree_stock AFTER INSERT ON entree
FOR EACH ROW
BEGIN
IF((SELECT libelle FROM stock) IS NULL)
THEN
INSERT INTO stock (code_article,libelle,quantite,poids_net,poids_brut,categorie,num_entree)
VALUES (new.code_article,new.article,new.quantite_tot,new.poids_tot_net,new.poids_tot_brut,new.categorie,new.num_entree)
ELSE
UPDATE stock
SET stock.quantite = stock.quantite + new.quantite_tot
WHERE stock.libelle = new.article

END IF
END
Afficher la suite 

1 réponse

Messages postés
26264
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
14 septembre 2019
1778
0
Merci
Bonjour

Deja...
(SELECT libelle FROM stock)

Sans where ?

Nb: a l'avenir, merci de poster ton code correctement https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
.
Merci pour l'infos, comme tu l'as bien constaté je suis nouveau sur ce forum, la remarque est sans doute pertinente et comme tu l'as dit, j'en tiendrai compte lors de mes prochaines interventions, toutefois ma préoccupation reste pendante! au sujet de l'absence de la clause "Where" cela m'a semblé sans importance vu que dans ma table "STOCK" le champ "libelle" est "Unique", ce qui me préoccupe c'est de savoir d'où proviendrait l'erreur dans mon code.

Merci !
Reivax962
Messages postés
3462
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
12 septembre 2019
914 -
Bonjour,
L'erreur provient exactement de l'endroit pointé par jordane45.
Que le champ libelle soit Unique n'y change rien : il faut que tu cherches l'existence d'un libellé égal à celui que tu insères, et pour ça il faut le préciser dans la clause WHERE.
Xavier
Commenter la réponse de jordane45