mysql - 如何处理 MySQL 中 auto_increment ID 列的碎片

标签 mysql auto-increment

我有一个带有 auto_increment 字段的表,有时行会被删除,所以 auto_increment 会留下空白。有什么方法可以避免这种情况,如果没有,至少,如何编写一个 SQL 查询:

  1. auto_increment 值更改为最大值(当前值)+ 1
  2. 返回新的 auto_increment 值?

我知道如何编写 12 部分,但我可以将它们放在同一个查询中吗?

如果那是不可能的:

如何“选择”(返回)auto_increment 值或 auto_increment 值 + 1?

最佳答案

重新编号会造成困惑。现有报告将引用记录 99,但如果系统重新编号,它可能会将该记录重新编号为 98,现在所有报告(和填充的 UI)都是错误的。一旦分配了唯一 ID,它就必须保持固定。

将 ID 字段用于除简单唯一编号以外的任何内容都会有问题。要求“无间隙”与能够删除的要求完全不一致。也许您可以将记录标记为已删除而不是删除它们。那么就真的没有差距了。假设您正在制作带编号的发票:您将拥有一张带有该编号的零值(value)已取消发票,而不是将其删除。

关于mysql - 如何处理 MySQL 中 auto_increment ID 列的碎片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1824600/

相关文章:

mysql自动增量和rails 4 :sql structure. sql

javascript - 如何将 mysql 查询的结果放入 html 文本框中

php - 试图拉入此查询中的第二条记录

php - 如何获取存储在多个表中的用户信息并显示在他的个人资料中,是否可以使用单个查询?

sql - 在 postgresql 中重置自动增量计数器

MYSQL: Two fields as PRIMARY KEYs + 1 Field as UNIQUE, 一道题

php - MySQL 内部连接返回同一行的倍数

MySQL 触发器 - 在插入时创建随机哈希键

sql-server - 删除后重置 SQL Server 中的自动增量

MySQL关于auto_increment的疑难问题