Comment faire un trigger avec des IF THEN ALSE ?
TSHITOS
-
TSHITOS -
TSHITOS -
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
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
A voir également:
- Comment faire un trigger avec des IF THEN ALSE ?
- Assistant trigger - Guide
- If exist ✓ - Forum Autoit / batch
- Miswiring check wiring then power on ✓ - Forum Autoradio
- IF EXIST dans un ".bat" - Forum Programmation
- Please remove the installation medium then press enter - Forum Ubuntu
1 réponse
Bonjour
Deja...
Sans where ?
Nb: a l'avenir, merci de poster ton code correctement https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
.
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 !
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