Maison > base de données > tutoriel mysql > Comment obtenir l'ID de ligne après une INSERT/UPDATE MySQL avec ON DUPLICATE KEY ?

Comment obtenir l'ID de ligne après une INSERT/UPDATE MySQL avec ON DUPLICATE KEY ?

Barbara Streisand
Libérer: 2024-12-05 08:51:13
original
555 Les gens l'ont consulté

How to Get the Row ID After a MySQL INSERT/UPDATE with ON DUPLICATE KEY?

Comment récupérer l'ID d'une ligne après INSERT/UPDATE à l'aide de MySQL ON DUPLICATE KEY

Insérer ou mettre à jour des données à l'aide de ON DUPLICATE KEY La clause dans MySQL peut être un moyen pratique de gérer les erreurs de clé en double. Cependant, il peut être difficile d'obtenir l'ID de la ligne affectée après l'opération.

Une hypothèse courante est que la fonction LAST_INSERT_ID() renvoie uniquement l'ID des lignes nouvellement insérées. Cependant, dans un scénario ON DUPLICATE KEY, il peut également renvoyer l'ID mis à jour si une ligne a été modifiée.

La solution : LAST_INSERT_ID(expr)

Pour créer LAST_INSERT_ID () significatif à la fois pour les insertions et les mises à jour, MySQL propose la solution de contournement suivante :

INSERT INTO table (a,b,c) VALUES (1,2,3)
ON DUPLICATE KEY UPDATE>
Copier après la connexion

Dans cet exemple, la colonne id est supposée être la clé primaire AUTO_INCREMENT. En attribuant LAST_INSERT_ID(id) à la colonne id lors de la mise à jour, la fonction renvoie l'ID mis à jour.

Récupération du dernier ID d'insertion/mise à jour

Une fois la solution de contournement appliquée place, vous pouvez utiliser la fonction LAST_INSERT_ID() pour récupérer l'ID de la ligne qui a été insérée ou mis à jour :

Copier après la connexion

Cette approche vous permet de récupérer l'ID de la ligne affectée par l'opération INSERT/UPDATE sans avoir besoin d'exécuter une requête distincte pour le récupérer.

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