Использование агрегатных функций внутри триггера в MySQL - PullRequest
2 голосов
/ 16 ноября 2009

У меня есть таблица «Люди» с несколькими атрибутами, включая «возраст». Каждый раз, когда я вставляю новый кортеж в эту таблицу, я хотел бы узнать средний возраст всех людей, перечисленных в таблице. Если среднее значение выше 50, я хочу изменить возраст вставляемого кортежа. Для этого я использую триггер BEFORE INSERT. Вот тестовый код, который у меня есть (вы можете игнорировать строки с разделителями):

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 Ответ

0 голосов
/ 16 ноября 2009

Вы рассчитываете среднее значение только для 1 значения (для каждой строки) Вам лучше использовать SELECT AVG (возраст) ОТ людей

...