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.