bonjour,
me voici avec mon premier trigger. Donc j'ai une table itemavendre avec un champ estVenteExterne (0 ou 1), et enVente (0,1,2,3);
Je veux qu'a chaque changement du champ enVente dans ma table itemavendre ET uniquement les lignes qui sont à estVenteExterne=1, faire soit une insertion, soit un update dans la table partenaireMajStock (update si ligne déjà créée).
itemavendre(numItemAVendre,enVente,prix,estVenteExterne)
partenaireMajStock(numPartenaire,numItemAVendre,dateCreation,dateTransmission).
je pense insérer numPartenaire via un paramètre, mais pas sur que c'est possible avec un trigger....
est ce que c'est correct ? (je ne peux pas tester pour l'instant, je veux juste savoir si la syntaxe est ok)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 CREATE TRIGGER `insertMouvementStockApresInsert` AFTER INSERT ON `itemavendre` FOR EACH ROW BEGIN DECLARE _numPartenaire INT; # on ne fait des modif que sur changement de l etat de vente IF (NEW.estVenteExterne==2) THEN /*on regarde si il existe si oui update si non create*/ SELECT numPartenaire INTO @numPartenaire FROM partenairesMajStock WHERE numPartenaire = _numPartenaire AND numItemAVendre=NEW.numItemAVendre; IF @numPartenaire!=null THEN UPDATE partenairesMajStock SET enVente=_enVente,dateCreation=now() WHERE numItemAVendre = NEW.numItemAVendre ELSE INSERT INTO partenairesMajStock (numPartenaire,numItemAvendre,dateCreation,dateTransmission) VALUES(numPartenaire,NEW.numItemAVendre,now(),null) END IF; END;
Merci
Partager