Comment faire un trigger avec des IF THEN ALSE ?

Fermé
TSHITOS - 12 sept. 2019 à 06:29
 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

1 réponse

jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
12 sept. 2019 à 06:45
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
.
0
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 !
0
Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
12 sept. 2019 à 11:18
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
0
Oui, merci !
0