Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Meu gatilho MySQL não funciona, sintaxe simples, não complicada


Uma função ou gatilho armazenado não pode modificar uma tabela que já está sendo usada (para leitura ou gravação) pela instrução que invocou a função ou gatilho.

de:Restrições do programa armazenado .

Geralmente com um trigger que é disparado no insert, se você quiser alterar o valor que está sendo inserido você faz o trigger do tipo BEFORE INSERT e altere os valores em NEW

também notei que a seguinte declaração não é o que você quer de qualquer maneira.
update pos_table set PTS=((NEW.won_games*2)+(NEW.tie_games*1));

Ele atualiza a tabela inteira enquanto acho que você está apenas tentando atualizar uma linha específica. De qualquer forma, este é um cálculo simples, então você realmente não precisa armazenar esta coluna. Você pode facilmente calcular o valor no momento da exibição e tornar seu código muito mais simples + evitar o problema com o gatilho.