Использование агрегатных функций внутри триггера в MySQL

StackOverflow https://stackoverflow.com/questions/1739495

Вопрос

У меня есть таблица «народ» с несколькими атрибутами, включая «возраст». Каждый раз, когда я вставляю новый кортеж в эту таблицу, я хотел бы узнать средний возраст всех людей, перечисленных в таблице. Если среднее значение превышает 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 (возраст) от людей

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top