2016-03-17 110 views
-1

我有表中有序列号。 1,2,3,4,5等 如果我删除了ex的数据。 2没有。然后我的表显示1,3,4,5,6 .... 我希望它应该重置序列号字段。有人可以帮我吗?重置mysql中的自动增量值

Pravin

+2

如果你在其他地方使用ID,那将会弄乱整个应用程序。它不被推荐。 –

+4

[如何在MySQL中重置AUTO \ _INCREMENT?]可能重复(http://stackoverflow.com/questions/8923114/how-to-reset-auto-increment-in-mysql) –

+0

我不同意这个是@VickyThakor提到的问题的重复。这是关于重新编号现有的行。 –

回答

0

您可以通过重新创建表格来对其重新编号。如果桌子很小,这可能是最简单的方法... 100K行或更小。

像这样的东西会做的伎俩。

RENAME mytable TO mytable_previous; 
CREATE mytable LIKE mytable_previous; 
TRUNCATE TABLE mytable; 
ALTER TABLE mytable AUTO_INCREMENT = 1; 

INSERT INTO mytable 
     (col, col, col) /* name all cols except autoincrementing */ 
SELECT (col, col, col) /* same names, same order */ 
    ORDER BY id; 

这将使INSERT操作可以恢复在相同的顺序自动增量为上表中,但没有差距。

请注意 ...这可能是一个坏主意。如果在其他表中使用自动增量id列作为此表的参考,则执行此操作将残骸您的数据库。具有DELETE操作的生产数据库表通常只存在自动增量行号中的空位。这些差距肯定不会造成伤害。