【问题标题】:Autoincrement doesn't correct ID value after DELETE in MySQL [duplicate]在 MySQL 中删除后自动增量不更正 ID 值 [重复]
【发布时间】:2015-09-28 12:03:48
【问题描述】:

我有一个包含不同帖子的博客。假设我有 10 个帖子。当我选择删除DELETE FROM table WHERE id = 10 的最新帖子时,它会删除它。

但是,我下一篇文章的 ID 为 11。

所以我的数据库看起来像:

ID | post
11 | foo
9  | bar

但我删除的数字 10 不再存在。我怎样才能使下一个帖子的 ID 为 10?

ID 列是自动递增的。

【问题讨论】:

  • 完全没有问题,完全按预期工作。
  • 您可以在自己的脚下开枪,并使用 id=10 进行显式插入,并且大部分时间都可以侥幸成功。或者你可以动摇强迫症的固定而不这样做。担心差距的人的心态可能是没有 FK RI 的 db 所有者,只是将新父母挂在孤儿身上

标签: php mysql sql sql-delete


【解决方案1】:

我认为最好的答案是你不知道

这是关系数据库的预期(和正确)行为。

假设您有通过帖子 ID 与您的博客帖子相关的 cmets。如果您删除帖子并保留 cmets,将另一个帖子的 ID 更改为旧 ID 将导致 cmets 与错误的帖子相关。

这只是一个简单的例子。这种类型的数据关系错误有可能在数据库中造成严重破坏。 ID 以这种方式自动递增,以保证唯一性。

【讨论】:

  • 就我而言,与帖子相关的所有内容都会被删除。
  • 您想通过将 ID 值强制为下一个可用值来实现什么?如果您有 12 个帖子并删除第 4 个怎么办?
  • 在您当前的示例中可能是@TyhaiMahy。如果另一个开发人员进来并创建一个只删除该表的记录而不删除其他相关记录的任务怎么办?您不应该回收 ID。另一种方法是创建一个临时表来存储数据,直到您确定应该为其分配一个 ID,然后将其转移到永久表。
猜你喜欢
  • 2011-01-13
  • 2014-01-09
  • 1970-01-01
  • 2021-03-03
  • 2012-11-18
  • 2012-07-08
  • 1970-01-01
相关资源
最近更新 更多