0

可能重复:
如何填写自动增量字段中的“漏洞”?

我们目前在一个表中使用自动增量,其中条目不断地来来去去。问题在于,最终自动增量 id 会变得很大,因为这就是自动增量的工作方式。

我们希望它始终将 +1 添加到最后一个条目。

例如:
我们有 4 个条目,id 4 被删除。下一个添加的条目应该得到 id 4,而不是 5。

我不确定以前是否有人问过这个问题。但是在搜索之后,我只能找到关于如何获得下一个自增数的解决方案,这根本不是我想要的。

4

4 回答 4

1

您不应该这样做,因为 auto_increment 以这种方式设计是有充分理由的(例如,如果您有备份并且当它包含已重写的旧删除 id 时想要恢复它,您该怎么做?)

但要回答你的问题:你必须使用

ALTER TABLE `table` AUTO_INCREMENT = MAX(id)+1;

删除后,可以触发

于 2012-10-30T12:55:59.690 回答
0

如果你真的想这样做(我个人鼓励你使用自动增量),你需要执行一个事务来获取最后一个 ID 并插入新行,设置它的 ID 根据另一个递增它。

于 2012-10-30T12:54:04.973 回答
-1

这样做不是一个好主意,ID 应该始终保持唯一,无论记录是存在还是被删除。

但是,如果你真的想这样做,你可以用类似的东西来做到这一点

select max(id) + 1 of bla;

但是您需要正确的事务级别,因为如果您不这样做,则可能会出现重复的 ID。

于 2012-10-30T12:56:28.010 回答
-3

您可以选择最大 id 值并增加它。

SELECT MAX(`id`)+1 as `new id` FROM `table`;

如果你有 5 个条目并且第 3 个被删除,这仍然会让你 6 作为下一个 id。

于 2012-10-30T12:55:02.733 回答