Creo que la respuesta a esto se aborda en MySQL documentos :
Si una tabla contiene un AUTO_INCREMENT
columna y INSERT
... UPDATE
inserta una fila, el LAST_INSERT_ID()
la función devuelve el AUTO_INCREMENT
valor. Si la declaración actualiza una fila en su lugar, LAST_INSERT_ID()
no es significativo. Sin embargo, puede solucionar esto usando LAST_INSERT_ID(expr)
. Supongamos que id es el AUTO_INCREMENT
columna. Para hacer LAST_INSERT_ID()
significativo para las actualizaciones, inserte filas de la siguiente manera:
INSERT INTO table (a,b,c) VALUES (1,2,3)
ON DUPLICATE KEY UPDATE id=LAST_INSERT_ID(id), c=3;