Verwenden von Aggregatfunktionen in einem Auslöser in MySQL
-
20-09-2019 - |
Frage
Ich habe eine "People" -Tabelle mit mehreren Attributen, einschließlich "Alter". Jedes Mal, wenn ich ein neues Tupel in diese Tabelle einfüge, möchte ich das Durchschnittsalter aller in der Tabelle aufgeführten Personen herausfinden. Wenn der Durchschnitt über 50 liegt, möchte ich das Alter im einfügenen Tupel ändern. Ich benutze dafür einen Auslöser "Before Insert". Hier ist der Testcode, den ich derzeit habe (Sie können die Zeilen von 'Trennzeichen' ignorieren):
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 ;
Was mache ich falsch?
Lösung
Sie berechnen den Durchschnitt für nur 1 Wert (für jede Zeile). Sie sollten Select AVG (Alter) von Menschen besser verwenden
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow