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

#1442 - Não é possível atualizar a tabela '*' na função/trigger armazenada porque ela já é usada pela instrução que invocou esta função/trigger armazenada


Ele não permitirá que você atualize a tabela porque ela já está sendo lida pelo INSERT INTO.. SELECT consulta que invoca esse gatilho.

Uma forma alternativa seria desabilitar o gatilho e atualizar a tabela de usuários separadamente, por exemplo:
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";

Você pode adicionar uma coluna de junção com ON cláusula se houver alguma coluna que vincule essas duas tabelas.