Acredito que a resposta para isso seja abordada no MySQL documentos :
Se uma tabela contém um
AUTO_INCREMENT
coluna e INSERT
... UPDATE
insere uma linha, o LAST_INSERT_ID()
função retorna o AUTO_INCREMENT
valor. Se a instrução atualizar uma linha, LAST_INSERT_ID()
não é significativo. No entanto, você pode contornar isso usando LAST_INSERT_ID(expr)
. Suponha que o id seja o AUTO_INCREMENT
coluna. Para fazer LAST_INSERT_ID()
significativo para atualizações, insira linhas da seguinte forma:INSERT INTO table (a,b,c) VALUES (1,2,3)
ON DUPLICATE KEY UPDATE id=LAST_INSERT_ID(id), c=3;