Je crois que la réponse à cela est adressée dans le MySQL documentation :
Si une table contient un AUTO_INCREMENT
colonne et INSERT
... UPDATE
insère une ligne, le LAST_INSERT_ID()
la fonction renvoie le AUTO_INCREMENT
évaluer. 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 cet identifiant soit le AUTO_INCREMENT
colonne. Pour faire 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;