Maison > base de données > tutoriel mysql > Comment puis-je récupérer l'ID d'une ligne affectée après une INSERT ON DUPLICATE KEY UPDATE dans MySQL ?

Comment puis-je récupérer l'ID d'une ligne affectée après une INSERT ON DUPLICATE KEY UPDATE dans MySQL ?

Patricia Arquette
Libérer: 2024-12-04 18:19:15
original
973 Les gens l'ont consulté

How Can I Retrieve the ID of an Affected Row After an INSERT ON DUPLICATE KEY UPDATE in MySQL?

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 :

  1. Assurez-vous que votre table comporte une colonne AUTO_INCREMENT, telle que id.
  2. Utilisez ce qui suit syntaxe de requête :
INSERT INTO table (a,b,c) VALUES (1,2,3)
ON DUPLICATE KEY UPDATE>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal