tables de base de données ont des numéros d'identification uniques , appelées clés primaires , pour chaque ligne individuelle . La fonction d'auto- incrément de MySQL assigne automatiquement un nouveau numéro à une colonne de type integer vous indiquez que votre clé primaire , ce qui vous permet d'économiser le temps nécessaire pour créer votre propre clé primaire et code de suivi. Si vous laissez tomber les lignes , cependant, votre séquence de valeurs incrémentation automatique tombe en décalage avec le reste des valeurs de la colonne . La fonction d'auto- incrément de la fonction d'auto-incrémentation fonctionne en gardant une trace des numéros d'identification de rangée sur la table elle-même . Lorsque vous désignez une colonne particulière à l'auto -increment , 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 identifie 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 il a attribué à une ligne. Getting Out of Sync Lorsque vous supprimez des lignes de votre table , vous supprimez les composants individuels dans l'ordre des numéros du moteur ISAM attribué à vos lignes. Si vous supprimez votre quatrième rangée , par exemple, alors MySQL ne va pas en arrière et réaffecter les valeurs numériques dans le domaine qui est incrémenté automatiquement , afin de maintenir l'ordre numérique . De même, si MySQL a donné la dernière ligne que vous avez ajouté un numéro d' indentification de 20 ans et que vous supprimez-le, le moteur ISAM attribue encore la rangée suivante, vous ajoutez la valeur de 21. Auto- incrément réponse Parce que le but de l'auto -increment est de fournir chaque ligne de votre table MySQL un identifiant unique, ce n'est pas grave si les numéros qu'elle attribue 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. La conception des programmes qui s'appuient sur une séquence 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 supprimée peuvent faire leur dysfonctionnement. Chargement des données de ligne dans un objet de type 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 trous après vous déposez lignes de votre table. Lorsque vous déposez la colonne entière , MySQL ignore également son propre record du nombre prochaine, il va utiliser pour la prochaine ligne vous attribuez cette table. Lorsque vous recréez la colonne avec la même syntaxe auto-increment , 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, afin de maintenir un ordre parfait, vous devez répéter cette étape chaque fois que vous déposez une rangée de votre tableau .
|