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

#1442 - No se puede actualizar la tabla '*' en la función/disparador almacenado porque ya la usó la declaración que invocó esta función/disparador almacenado

No le permitirá actualizar la tabla porque ya la está leyendo INSERT INTO.. SELECT consulta que invoca este activador.

Una forma alternativa sería deshabilitar el activador y actualizar la tabla de usuarios por separado, por ejemplo:

INSERT INTO signed (time_of_start, player)
SELECT time_of_game_id, users.user_id FROM time_of_game, users
WHERE time_of_game.time_of_start="2017-02-01 12:00:00"
AND users.steamid="1234567890123456";

UPDATE users join time_of_game SET users.credit = users.credit-1
where time_of_game.time_of_start="2017-02-01 12:00:00"
AND users.steamid="1234567890123456";

Puede agregar una columna de unión con ON cláusula si hay alguna columna que vincule estas dos tablas.