2010-11-28 37 views
0

J'ai une table dans ma base de données, newvehicles qui a les champs suivants:Ligne décrémenter/incrémenter, dans phpMyAdmin

id (AUTO_INCREMENT) 
make 
model 
doors 
bodystyle 
price 

et ceci est un exemple:

1 Volkswagen Golf 2.0 GTI 3 Hatchback $39,490 
2 Ford  Mondeo 2.3 Zetec 4 Sedan $54,450 
3 BMW  3-Series 318i 4 Sedan $62,667 
4 Renault Clio  1.2 Base 3 Hatchback $22,686 
5 Volvo  S60  3.2T SE 4 Sedan $49,460 
6 BMW  5-Series 540i 4 Sedan $89,990 

Si J'ai supprimé, disons, la ligne 4, il aurait les lignes 1, 2, 3, 5 et 6, et afin de réinitialiser l'incrément, j'utilise ce code:

UPDATE automobiles SET id=id-1 WHERE id > 3 

Cependant, est-il possible que je peux automatiquement obtenir phpMyAdmin pour réinitialiser les valeurs d'incrément pour le champ id (car il a un incrément automatique dans) et je ne veux pas vraiment continuer à utiliser le code ci-dessus à chaque fois. Soit dit en passant, je ne sais pas si cela est pertinent, mais la base de données est stockée comme InnoDB, juste au cas où je dois faire des clés étrangères pour d'autres bases de données qui peuvent lier à elle.

Je suis assez nouveau à ce sujet, donc j'apprécierais l'aide!

+4

Pourquoi devez-vous le diminuer? C'est très mauvais de le faire, surtout si vous faites référence à des choses dans cette table à partir d'autres tables basées sur l'identifiant. – thejh

+0

Vous ne devez pas déranger auto_increment, est ** auto increment ** (toujours ++) – ajreal

+0

duplication possible de [Comment "réinitialiser" compteur auto-incrémentation dans mysql] (http://stackoverflow.com/questions/ 4298416/comment réinitialiser-auto-increment-counter-in-mysql) –

Répondre

1

La valeur d'incrémentation automatique est utilisée comme identifiant unique. Donc plus tard si vous enregistrez cette clé ailleurs, vous tirerez toujours cet enregistrement particulier.

Si vous voulez un numéro qui est toujours séquentiel, je suggère d'utiliser un compteur lorsque vous les affichez. Je pense que cela permettrait d'économiser du travail à long terme.