重置mysql中的自动增量值

时间:2016-03-17 10:21:31

标签: mysql

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

普拉

1 个答案:

答案 0 :(得分: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操作以与上一个表相同的顺序重做自动增量,但没有间隙。

BEWARE ......这可能是一个坏主意。如果在其他表中使用自动增量id列作为对此表的引用,则执行此操作将 wreck 您的数据库。具有DELETE操作的生产数据库表通常仅存在自动增量行号中的间隙。这些差距肯定不会造成伤害。