2011-04-05 4 views
0

J'ai une table qui a deux champs.problème avec auto_increment()

table test 
{ 
fname char(20), 
id int not null auto_increment, 
primary key(id) 
} 

maintenant j'ajouter 3 enregistrements à la table comme ci-dessous:

insert into test(fname) values 
('a'),('b'),('c'); 

et la table ressemble

fname id 
a  1 
b  2 
c  3 

maintenant supprimer b de la table, donc j'ai:

maintenant encore une fois j'insère une nouvelle rec ord dans la table

insert into test(fname) values('d); 

et obtenez:

fname id 
a  1 
b  3 
d  4 

mais je veux dernier id de disque à être "2"

comment puis-je faire cela?

+0

Qu'est-ce que MySQL est en train de faire est certainement correcte et appropriée. Vous ne voulez pas dupliquer un identifiant qui a déjà été utilisé !! Cela conduira à toutes sortes d'ambiguïtés dans vos données. – Brad

Répondre

3

Une colonne d'incrémentation automatique serait utilisée pour identifier vos lignes comme uniques si vous n'avez aucun autre candidat pour une clé primaire. Si vous comptez qu'il n'y a pas de trous dans votre séquence, alors vous avez des problèmes avec la logique de la façon dont vous abordez le problème, vos requêtes ne doivent pas dépendre de rien d'autre que d'être uniques.

trouvent également un morceau de MySQL Cookbook chapter qui dit le même

0

Je ne pense pas que vous pouvez changer cela. C'est houw auto_increment fonctionne dans mysql.

0

Vous ne pouvez pas faire cela avec auto-incrémentation. Il conserve uniquement l'identifiant du dernier enregistrement inséré et l'incrémente lorsque vous l'insérez. Il ne garde pas trace des opérations de suppression.

Quoi qu'il en soit, pourquoi voulez-vous le faire?

Questions connexes