2012-07-20 95 views
2

我试图改变自动增量值,使之从一个特定的编号开始:自动增量不改变

ALTER TABLE batchinfo AUTO_INCREMENT = 20000; 

但是,当我查询的记录,旧的编号(1,2 .. )仍然存在,尽管该声明看起来很成功。我正在使用MySQL工作台。可能是什么问题呢 ?

+1

它只影响你插入的新记录。它不会影响您的现有值。 – 2012-07-20 13:19:42

回答

2

该查询所做的更改下一个AUTO_INCREMENT值。它不会改变现有的值。

如果你已经有了值1,2,3,... 100,然后更改AUTO_INCREMENT 20000,下一个输入的值将不101,但20000

5

改变AUTO_INCREMENT不改变过去产生的值,它只设置下一个生成的值。如果你想改变过去的价值,那么你将需要执行UPDATE。例如,像这样:

UPDATE batchinfo SET id = id + 19999; 

小心,你没有任何其他表引用此列,或它们的引用将失效。 (除非那些引用被正确指出;只有InnoDB表支持外键,并且所有这些外键都必须用ON UPDATE CASCADE来定义,以达到预期的效果。)

+0

+1因为很明显为什么人工智能不会改变所有过去的价值观,如何改变所有过去的价值观和谨慎提及。好答案。 – 2012-07-20 13:22:02

1

您的查询将设置一个新的起始值从现在开始生成的自动增量值。它不会更新已存储在表格中的自动增量值。