MySQL ON DUPLICATE KEY peut-il renvoyer le dernier identifiant inséré ou mis à jour ?
Dans MySQL, l'instruction INSERT ... ON DUPLICATE KEY UPDATE permet des opérations d'insertion ou de mise à jour au sein d'une seule requête. Cependant, obtenir l'ID de la ligne concernée peut être difficile.
Normalement, la fonction LAST_INSERT_ID() renvoie l'ID de l'enregistrement nouvellement inséré. Après une opération de mise à jour, cela n’a plus aucun sens. Pour résoudre ce problème, vous pouvez exploiter une expression avec LAST_INSERT_ID(), comme décrit dans la documentation MySQL.
Plus précisément, créez une expression qui met à jour le champ id (une colonne AUTO_INCREMENT dans cet exemple) et inclut LAST_INSERT_ID(expr ) comme expression pour lui donner un sens pour mises à jour.
Exemple :
Considérez une table avec une colonne id comme AUTO_INCREMENT. Pour mettre à jour ou insérer des lignes et récupérer l'ID affecté :
INSERT INTO table (a, b, c) VALUES (1, 2, 3) ON DUPLICATE KEY UPDATE id = LAST_INSERT_ID(id), c = 3;
Cette approche garantit que LAST_INSERT_ID() fournit l'ID de la ligne affectée, quelles que soient les opérations d'insertion ou de mise à jour, éliminant ainsi le besoin d'une deuxième requête pour obtenir la pièce d'identité.
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!