Trigger table C et update table A
	
	
		Bonjour,
Je bute sur un problème de trigger sans parvenir à en trouver l'explication, encore moins la solution.
Soit 3 tables, ta, tb et tc.
ta comprend les colonnes :
tb comprend les colonnes : 
tc comprend les colonnes : 
tb.refA référence ta.idA
tc.refB référence tb.idB
Pour chaque ligne de ta, je peux avoir de 1 à N lignes la référençant dans tb
Pour chaque ligne de tb, je peux avoir de 0 à 1 ligne la référençant dans tc. tc étend en quelque sorte tb.
Un trigger est positionné sur tc pour :
1. calculer et mettre à jour tc.surf d'après les valeurs saisies de tc.long et tc.larg : ça fonctionne.
2. calculer et mettre à jour ta.surfTotal, sachant qu'il peut y avoir plusieurs lignes dans tb référençant ta... : ça ne fonctionne pas.
	Code:
	
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 
 | TRIGGER `CompleteSurface` BEFORE INSERT ON `TableC` FOR EACH ROW
BEGIN
    DECLARE surfTotal double;
    DECLARE num int;
 
/*  calcul et màj de tc.surf */
    SET NEW.surf = NEW.long * NEW.larg;
 
/*  calcul et màj de ta.surfTotal */
    SET num = (SELECT refA FROM tb WHERE tb.idB = NEW.refB);
    UPDATE ta
    SET ta.surfTotal = (SELECT SUM(tc.surf) FROM tc
                        LEFT JOIN tb ON tc.refB = tb.idB
                        WHERE tb.refA = num
                        GROUP BY tb.refA)
    WHERE ta.num = num;
END; | 
 Mais pourtant ça marche si j'exécute dans PMA : 
UPDATE ta
	Code:
	
| 12
 3
 4
 5
 
 | SET ta.surfTotal = (SELECT SUM(tc.surf) FROM tc
                    LEFT JOIN tb ON tc.refB = tb.idB
                    WHERE tb.refA = (SELECT refA FROM tb WHERE tb.idB = valeur-de-refB)
                    GROUP BY tb.refA)
WHERE ta.num = (SELECT refA FROM tb WHERE tb.idB = valeur-de-refB); | 
 où valeur-de-refB correspond à NEW.refB.
Je sèche un peu là... Je ne dois pas m'y prendre comme il faut.