我创建了一个表并设置了一个字段来自动增加这样的东西:
CREATE TABLE t1(id BIGINT NOT NULL PRIMARY KEY AUTO_INCREMENT) ENGINE = MyISAM AUTO_INCREMENT = 123456;
但由于某种原因,我删除了表格中的一些行。
现在的问题是,当我在表中插入新行时,应该为新行分配已删除的行的ID,而不是分配新的ID。
我不想重置所有id
我该怎么做?
帮助赞赏:)
答案 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