Mysql
 sql >> Base de données >  >> RDS >> Mysql

insérer lors de la mise à jour de la clé en double

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;