Consultez cette page :https://web. archive.org/web/20150329004325/https://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html
Au bas de la page, ils expliquent comment rendre LAST_INSERT_ID significatif pour les mises à jour en transmettant une expression à cette fonction MySQL.
À partir de l'exemple de documentation MySQL :
Si une table contient une colonne AUTO_INCREMENT et que INSERT ... UPDATE insère une ligne, la fonction LAST_INSERT_ID() renvoie la valeur AUTO_INCREMENT. Si l'instruction met à jour une ligne à la place, LAST_INSERT_ID() n'est pas significatif. Cependant, vous pouvez contourner ce problème en utilisant LAST_INSERT_ID(expr). Supposons que id soit la colonne AUTO_INCREMENT. Pour rendre LAST_INSERT_ID() significatif pour les mises à jour, insérez des lignes comme suit :
INSERT INTO table (a,b,c) VALUES (1,2,3)
ON DUPLICATE KEY UPDATE id=LAST_INSERT_ID(id), c=3;