sql >> Base de Datos >  >> RDS >> Mysql

Mi disparador MySQL no funciona, sintaxis simple, no complicada

Una función o activador almacenado no puede modificar una tabla que ya está siendo utilizada (para lectura o escritura) por la instrucción que invocó la función o el activador.

from:Restricciones de programas almacenados .

Generalmente, con un disparador que se dispara al insertar, si desea cambiar el valor que se está insertando, haga el disparador del tipo BEFORE INSERT y cambie los valores en NEW

También noté que la siguiente declaración no es lo que quieres de todos modos.

update pos_table set PTS=((NEW.won_games*2)+(NEW.tie_games*1));

Actualiza toda la tabla mientras creo que solo está intentando actualizar una fila específica. De todos modos, este es un cálculo simple, por lo que realmente no necesita almacenar esta columna. Puede calcular fácilmente el valor en el momento de la visualización y hacer que su código sea mucho más simple + evitar el problema con el activador.