Récupération de l'ID pour les mises à jour ON DUPLICATE KEY dans MySQL
Lors de l'exécution d'une requête INSERT ON DUPLICATE KEY, obtention de l'ID de la ligne affectée peut être un défi. Traditionnellement, cela nécessite l'exécution d'une requête distincte, car LAST_INSERT_ID() ne renvoie généralement que l'ID des lignes nouvellement insérées.
Cependant, il existe une solution de contournement qui exploite la fonction LAST_INSERT_ID(expr). En passant une expression à cette fonction, vous pouvez rendre sa sortie significative même pour les lignes mises à jour.
La solution
Pour récupérer l'ID de la ligne insérée ou mise à jour en utilisant une seule requête :
INSERT INTO table (a,b,c) VALUES (1,2,3) ON DUPLICATE KEY UPDATE>
En définissant la colonne id sur LAST_INSERT_ID(id) dans la clause UPDATE, MySQL stockera la nouvelle valeur AUTO_INCREMENT dans la colonne id pour les lignes insérées et mises à jour.
Cela vous permet de récupérer l'ID de l'opération la plus récente (soit une insertion, soit une mise à jour) en appelant simplement LAST_INSERT_ID(). Il combine efficacement les fonctionnalités des instructions INSERT et UPDATE en une seule requête.
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!