Mysql中的自动增量问题

时间:2011-07-12 20:46:59

标签: mysql

我创建了一个表并设置了一个字段来自动增加这样的东西:

CREATE TABLE t1(id BIGINT NOT NULL PRIMARY KEY AUTO_INCREMENT) ENGINE = MyISAM AUTO_INCREMENT = 123456; 

但由于某种原因,我删除了表格中的一些行。

现在的问题是,当我在表中插入新行时,应该为新行分配已删除的行的ID,而不是分配新的ID。

我不想重置所有id

我该怎么做?

帮助赞赏:)

5 个答案:

答案 0 :(得分:7)

很抱歉,但这不是AUTO_INCREMENT.的使用。如果你想重新使用id,那么你必须编写自己的触发函数,这样做通常被认为是不好的做法。

想象一下,你在id为50,000,并删除了一个id为1的条目...你真的想要你添加的下一条记录重新使用id 1吗?

答案 1 :(得分:3)

AUTO_INCREMENT的重点是自动增加......

您可以显式分配这些ID,而mysql将允许它。

答案 2 :(得分:2)

您将不得不手动执行此操作,而不是依靠MySQL为您执行此操作。 AUTO-INCREMENT标志保持一个整数,该整数在每个insert语句时递增,并被指定为后续插入的PK。除非你想编写一个更新触发器,将该值重置为最低的未使用整数,否则我建议用服务器端脚本语言处理它。

无论如何,为什么使用自动增量值会出现问题?

答案 3 :(得分:0)

要重置自动增量值,您可以使用

ALTER TABLE t1 AUTO_INCREMENT=1

下一个插入的记录将使用ID 1。

答案 4 :(得分:0)

这可能是您所追求的。

alter table Users AUTO_INCREMENT=0;

无论当前最高ID是多少,这都会将auto_increment重设为0 +

如果您有30,则下一个条目将是31