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....

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;
est ce que c'est correct ? (je ne peux pas tester pour l'instant, je veux juste savoir si la syntaxe est ok)

Merci