可能重复:
如何填写自动增量字段中的“漏洞”?
我们目前在一个表中使用自动增量,其中条目不断地来来去去。问题在于,最终自动增量 id 会变得很大,因为这就是自动增量的工作方式。
我们希望它始终将 +1 添加到最后一个条目。
例如:
我们有 4 个条目,id 4 被删除。下一个添加的条目应该得到 id 4,而不是 5。
我不确定以前是否有人问过这个问题。但是在搜索之后,我只能找到关于如何获得下一个自增数的解决方案,这根本不是我想要的。
可能重复:
如何填写自动增量字段中的“漏洞”?
我们目前在一个表中使用自动增量,其中条目不断地来来去去。问题在于,最终自动增量 id 会变得很大,因为这就是自动增量的工作方式。
我们希望它始终将 +1 添加到最后一个条目。
例如:
我们有 4 个条目,id 4 被删除。下一个添加的条目应该得到 id 4,而不是 5。
我不确定以前是否有人问过这个问题。但是在搜索之后,我只能找到关于如何获得下一个自增数的解决方案,这根本不是我想要的。
您不应该这样做,因为 auto_increment 以这种方式设计是有充分理由的(例如,如果您有备份并且当它包含已重写的旧删除 id 时想要恢复它,您该怎么做?)
但要回答你的问题:你必须使用
ALTER TABLE `table` AUTO_INCREMENT = MAX(id)+1;
删除后,可以触发
如果你真的想这样做(我个人鼓励你使用自动增量),你需要执行一个事务来获取最后一个 ID 并插入新行,设置它的 ID 根据另一个递增它。
这样做不是一个好主意,ID 应该始终保持唯一,无论记录是存在还是被删除。
但是,如果你真的想这样做,你可以用类似的东西来做到这一点
select max(id) + 1 of bla;
但是您需要正确的事务级别,因为如果您不这样做,则可能会出现重复的 ID。
您可以选择最大 id 值并增加它。
SELECT MAX(`id`)+1 as `new id` FROM `table`;
如果你有 5 个条目并且第 3 个被删除,这仍然会让你 6 作为下一个 id。