2009-11-16 3 views
2

J'ai une table 'People' avec plusieurs attributs dont 'age'. Chaque fois que j'insère un nouveau n-uplet dans cette table, je voudrais connaître l'âge moyen de toutes les personnes listées dans le tableau. Si la moyenne est supérieure à 50, je veux modifier l'âge dans le tuple en cours d'insertion. J'utilise un déclencheur 'BEFORE INSERT' pour cela. Voici le code de test J'ai actuellement (vous pouvez ignorer les lignes « » delimiter):Utilisation de fonctions agrégées à l'intérieur d'un déclencheur dans MySQL

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?

Répondre

0

Vous calcul de moyenne pour seulement 1 valeur (pour chaque ligne) Vous feriez mieux d'utiliser SELECT AVG (âge) des personnes

+0

Comment puis-je utiliser que dans une instruction IF dans un déclencheur? –

+0

@avg_age = CHOISIR AVG (age) FROM Personnes; SI (@avg_age> 50) ALORS ... – Dmitry

Questions connexes