Использование агрегатных функций внутри триггера в MySQL
-
20-09-2019 - |
Вопрос
У меня есть таблица «народ» с несколькими атрибутами, включая «возраст». Каждый раз, когда я вставляю новый кортеж в эту таблицу, я хотел бы узнать средний возраст всех людей, перечисленных в таблице. Если среднее значение превышает 50, я хочу изменить возраст в вставленном корне. Я использую для этого триггер «перед вставкой». Вот тестовый код, который у меня есть в настоящее время (вы можете игнорировать строки "разделителя"):
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 ;
Что я делаю не так?
Решение
Вы рассчитываете среднее значение только для 1 значения (для каждой строки), вам лучше использовать Select AVG (возраст) от людей
Не связан с StackOverflow