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

MySQL:reutilize o incremento automático durante a inserção


Sim. Como você descobriu, o valor do id ainda não foi gerado em um gatilho BEFORE INSERT. Mas você não pode alterar seu valor NEW.thread em um gatilho AFTER INSERT.

Você não pode confiar na leitura do INFORMATION_SCHEMA, pois pode causar uma condição de corrida.

Você só terá que fazer o INSERT e executar imediatamente:
UPDATE comments SET thread=id WHERE id=LAST_INSERT_ID() AND thread IS NULL;

Se for um comentário de raiz.

Veja também minhas respostas anteriores sobre o tópico semelhante: