Récupération de l'ID de ligne pour INSERT/UPDATE avec ON DUPLICATE KEY
Question :
Comment pouvez-vous récupérer l'ID d'une ligne après avoir effectué un INSERT ou UPDATE avec ON DUPLICATE KEY dans MySQL, sans devoir exécuter des requêtes distinctes ?
Réponse :
Pour y parvenir, vous pouvez utiliser la fonction LAST_INSERT_ID(expr) comme solution de contournement. En passant une expression à cette fonction, vous pouvez rendre LAST_INSERT_ID significatif pour les mises à jour.
Explication :
Comme mentionné dans la documentation liée (https://web.archive.org/web/20150329004325/https://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html), LAST_INSERT_ID() renvoie normalement uniquement le ' inséré' ID pour les INSERTs réussis.
Cependant, en utilisant LAST_INSERT_ID(expr) dans ON DUPLICATE KEY UPDATE, vous pouvez également la rendre significative pour les mises à jour.
Par exemple, si 'id' est votre colonne AUTO_INCREMENT, vous pouvez modifier votre requête comme suit :
INSERT INTO table (a) VALUES (0) ON DUPLICATE KEY UPDATE>
Dans dans ce cas, LAST_INSERT_ID(id) renverra l'ID mis à jour si un enregistrement existant a été trouvé et mis à jour, ou il renverra l'ID de l'enregistrement nouvellement inséré si aucun doublon n'a été trouvé.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!