MySQL Auto-Increment est Out of Sync

MySQL Auto-Increment est Out of Sync


tables de base de données ont des numéros d'identification uniques, appelées clés primaires, pour chaque ligne individuelle. La fonction auto-incrément de MySQL attribue automatiquement un nouveau numéro à une colonne entière vous indiquez que votre clé primaire, ce qui vous permet d'économiser le temps nécessaire pour créer votre propre clé primaire et le suivi du code. Si vous laissez tomber les lignes, cependant, votre séquence de valeurs d'auto-incrémentation tombe en décalage avec le reste des valeurs de la colonne.

Auto-Increment Fonction

La fonction auto-increment fonctionne en tenant un registre des numéros d'identification de ligne sur la table elle-même. Lorsque vous désignez une colonne particulière à incrémentation automatique, chaque fois que vous ajoutez une ligne à la table, le moteur ISAM de MySQL remplit automatiquement cette colonne avec une valeur numérique qui est plus grand que la valeur qui a identifié la dernière ligne que vous avez ajouté. La fonction ne repose pas sur les données de vos lignes elles-mêmes, mais son propre record de la dernière valeur qu'il affecté à une rangée.

Getting Out of Sync

Lorsque vous supprimez des lignes de votre table, vous supprimez des composants individuels dans la séquence de nombres le moteur ISAM attribué à vos lignes. Si vous supprimez votre quatrième ligne, par exemple, alors MySQL ne va pas en arrière et réaffecter les valeurs numériques dans le champ qui est automatiquement incrémenté, afin de maintenir la séquence numérique. De même, si MySQL a donné la dernière ligne que vous avez ajouté un numéro d'indentification de 20 et vous le supprimez, le moteur ISAM attribue encore la ligne suivante vous ajoutez la valeur de 21.

Auto-Increment Réponse

Parce que le but de l'auto-incrémentation est de fournir chaque ligne de votre table MySQL un identifiant unique, il n'a pas d'importance si les chiffres qu'il assigne l'identification ont des trous dans la séquence ou non. Il importe seulement que deux lignes ont le même numéro d'identification. conceptions de programmes qui reposent sur une suite ininterrompue de numéros pour naviguer dans le tableau de base de données ne sont pas fiables, car les lignes de base de données a chuté peuvent les faire dysfonctionnement. Chargement des données de ligne dans un objet semblable à un tableau et en utilisant indicies élément est une approche plus stable.

Solution

Pour garder votre colonne à incrémentation automatique dans l'ordre parfait, fixer des trous après que vous déposez les lignes de votre table. Lorsque vous déposez la colonne entière, MySQL supprime également son propre record du nombre suivant, il va utiliser pour la ligne suivante vous attribuez cette table. Lorsque vous recréez la colonne avec la même syntaxe incrémentation automatique, MySQL remplit automatiquement la colonne avec une séquence ordonnée de nombres pour chaque ligne que vous avez actuellement dans la base de données. Toutefois, pour maintenir une séquence parfaite, vous devez répéter cette étape chaque fois que vous déposez une ligne à partir de votre table.