Fonctions d'agrégat dans un trigger MySQL
-
20-09-2019 - |
Question
J'ai une table « Personnes » avec plusieurs attributs dont « l'âge ». Chaque fois que j'insérer une nouvelle ligne, dans ce tableau, je voudrais savoir l'âge moyen de toutes les personnes figurant dans le tableau. Si la moyenne est supérieure à 50, je veux modifier l'âge dans le tuple inséré. J'utilise un déclencheur « AVANT INSERT » pour cela. Voici le code de test je actuellement (vous pouvez ignorer les lignes « » delimiter):
delimiter |
CREATE TRIGGER checkAge BEFORE INSERT ON People
FOR EACH ROW BEGIN
IF AVG(age) > 50 THEN
SET NEW.age = 20;
END IF;
END
|
delimiter ;
Qu'est-ce que je fais mal?
La solution
Vous êtes en moyenne pour calculer la valeur à seulement 1 (pour chaque ligne) Vous feriez mieux d'utiliser SELECT AVG (âge) de personnes
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow