我有一个带有 auto_increment 字段的表,有时行会被删除,所以 auto_increment 会留下空白。有什么方法可以避免这种情况,如果没有,至少,如何编写一个 SQL 查询:
- 将
auto_increment
值更改为最大值(当前值)+ 1 - 返回新的
auto_increment
值?
我知道如何编写 1 和 2 部分,但我可以将它们放在同一个查询中吗?
如果那是不可能的:
如何“选择”(返回)auto_increment
值或 auto_increment
值 + 1?
最佳答案
重新编号会造成困惑。现有报告将引用记录 99,但如果系统重新编号,它可能会将该记录重新编号为 98,现在所有报告(和填充的 UI)都是错误的。一旦分配了唯一 ID,它就必须保持固定。
将 ID 字段用于除简单唯一编号以外的任何内容都会有问题。要求“无间隙”与能够删除的要求完全不一致。也许您可以将记录标记为已删除而不是删除它们。那么就真的没有差距了。假设您正在制作带编号的发票:您将拥有一张带有该编号的零值(value)已取消发票,而不是将其删除。
关于mysql - 如何处理 MySQL 中 auto_increment ID 列的碎片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1824600/