Utilizzando funzioni di aggregazione in un trigger In MySQL
-
20-09-2019 - |
Domanda
Ho una tabella 'persone' con diversi attributi tra cui 'l'età'. Ogni volta che si inserisce una nuova tupla in questa tabella, vorrei scoprire l'età media di tutte le persone elencate nella tabella. Se la media è superiore a 50, voglio modificare l'età nel tupla viene inserita. Io sto usando un trigger 'PRIMA DI INSERIRE' per questo. Ecco il codice di prova che hanno attualmente (è possibile ignorare le linee di delimitazione ''):
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 ;
Che cosa sto facendo di sbagliato?
Soluzione
Si sta calcolando la media di solo 1 valore (per ogni riga) È meglio utilizzare SELEZIONA AVG (età) da parte di persone
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow