Maison  >  Article  >  base de données  >  Pourquoi mon compteur à incrémentation automatique InnoDB continue-t-il à s'incrémenter malgré les clés en double ?

Pourquoi mon compteur à incrémentation automatique InnoDB continue-t-il à s'incrémenter malgré les clés en double ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-13 11:26:02384parcourir

Why Does My InnoDB Auto-Increment Counter Keep Incrementing Despite Duplicate Keys?

Problème d'incrémentation automatique d'InnoDB sur les clés en double

Dans une table de base de données InnoDB avec une clé primaire définie sur incrémentation automatique, il est observé que le compteur à incrémentation automatique continue d'augmenter même lorsque des clés en double sont détectées. Ce comportement conduit à des ID non consécutifs, comme le démontre l'exemple fourni. Pour résoudre ce problème, envisagez d'implémenter la solution suivante :

Modification de la configuration MySQL

En définissant l'option de configuration innodb_autoinc_lock_mode sur "0", vous pouvez passer au mode de verrouillage à incrémentation automatique traditionnel. Ce mode garantit que toutes les instructions INSERT attribueront des valeurs consécutives aux colonnes à incrémentation automatique, même lors de la tentative d'insertion de clés en double.

SET GLOBAL innodb_autoinc_lock_mode = 0;

Il est important de noter que les instructions INSERT Les identifiants ne doivent pas être utilisés pour une quelconque logique d'application. Leur objectif principal est de fournir des identifiants uniques pour chaque enregistrement. Bien que les identifiants consécutifs puissent être esthétiques, ils n'offrent aucun avantage pratique et peuvent potentiellement entraîner des problèmes dans les systèmes distribués.

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!

Déclaration:
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