Usando funções agregadas dentro de um gatilho em MySQL
-
20-09-2019 - |
Pergunta
Eu tenho uma mesa de 'pessoas' com vários atributos, incluindo 'idade'. Cada vez que insiro uma nova tupla nessa tabela, gostaria de descobrir a idade média de todas as pessoas listadas na tabela. Se a média estiver acima de 50, quero modificar a idade na tupla que está sendo inserida. Estou usando um gatilho 'antes da inserção' para isso. Aqui está o código de teste que eu tenho atualmente (você pode ignorar as linhas 'delimitador'):
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 ;
O que estou fazendo errado?
Solução
Você está calculando a média de apenas 1 valor (para cada linha), é melhor usar o AVG selecionado (idade) das pessoas
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow