Maison > base de données > tutoriel mysql > Pourquoi mon ID d'incrémentation automatique n'augmente-t-il pas avec ON DUPLICATE KEY UPDATE dans MySQL ?

Pourquoi mon ID d'incrémentation automatique n'augmente-t-il pas avec ON DUPLICATE KEY UPDATE dans MySQL ?

Mary-Kate Olsen
Libérer: 2024-12-03 07:35:10
original
673 Les gens l'ont consulté

Why Doesn't My Auto-Increment ID Increase with ON DUPLICATE KEY UPDATE in MySQL?

Comprendre la mise à jour de la clé en double avec incrémentation automatique

Description du problème :

Insérer des données dans une table avec une clause ON DUPLICATE KEY UPDATE entraîne des incréments d'ID inattendus lorsque des valeurs en double sont rencontrées. Plus précisément, l'ID augmente lors de l'insertion initiale, mais reste le même lors du déclenchement de la mise à jour.

Explication :

Selon la documentation MySQL, lors d'une MISE À JOUR DE CLÉ EN DUPLICATE est utilisée, MySQL tente d'abord une opération INSERT. Si cela conduit à une valeur de clé en double, une opération UPDATE est effectuée à la place. Toutefois, pour les colonnes à incrémentation automatique, l'incrément se produit uniquement pendant l'opération INSERT. Par conséquent, même si l'opération UPDATE est déclenchée, la valeur d'incrémentation automatique reste la même.

Solution :

Pour garantir des incréments d'auto-incrémentation appropriés, il n'est pas Il est conseillé de s'appuyer sur une séquence d'identification sans interruption. Au lieu de cela, envisagez de calculer et de gérer les valeurs incrémentielles manuellement ou d'utiliser la fonction AUTO_INCREMENT en sortie.

Remarques supplémentaires :

  • Pour maintenir une séquence d'identification sans interruption, un plus un mécanisme coûteux impliquant le verrouillage et la renumérotation des tables est nécessaire.
  • L'utilisation de valeurs incrémentielles calculées sur la sortie peut fournir un système plus efficace et plus flexible. solution.

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