2012-07-20 8 views
2

Je suis en train de changer la valeur d'incrément automatique pour faire part d'un certain nombre:incrément automatique ne change pas

ALTER TABLE batchinfo AUTO_INCREMENT = 20000; 

Mais quand je fais une recherche des enregistrements, l'ancienne numérotation (1,2 .. .) existe toujours, bien que, la déclaration semble réussie. J'utilise MySQL Workbench. Quel pourrait être le problème ?

+1

Cela n'affecte que le nouvel enregistrement que vous INSEREZ. Cela n'affecte pas vos valeurs existantes. –

Répondre

2

Cette requête effectuant le changement de suivantAUTO_INCREMENT valeur. Cela ne change pas les valeurs existantes.

Si vous avez déjà des valeurs 1, 2, 3, ... 100, puis changer AUTO_INCREMENT-20000, suivant la valeur saisie ne sera pas 101, mais 20000.

5

AUTO_INCREMENT ne change Modifier pas les valeurs générées passé , il ne définit que ce que sera la valeur générée. Si vous voulez changer les valeurs passées, vous devrez effectuer un UPDATE. Par exemple, quelque chose comme ceci:

UPDATE batchinfo SET id = id + 19999; 

Soyez prudent que vous n'avez pas d'autres tableaux faisant référence à cette colonne, ou leurs références seront invalidés. (Sauf si ces références sont correctement notées, seules les tables InnoDB prennent en charge les clés étrangères et toutes ces clés étrangères doivent être définies avec ON UPDATE CASCADE pour que cette commande ait l'effet escompté.)

+0

+1 Parce qu'il est clair pourquoi l'IA ne changera pas toutes les valeurs passées, comment changer toutes les valeurs passées et la mention prudente. Bonne réponse. –

1

Votre requête définit une nouvelle valeur de début pour les valeurs d'auto-incrémentation générées à partir de maintenant. Il ne mettra pas à jour les valeurs d'incrémentation automatique déjà stockées dans la table.

Questions connexes