【问题标题】:auto increment after delete from a table [duplicate]从表中删除后自动递增[重复]
【发布时间】:2011-09-23 02:11:45
【问题描述】:

可能重复:
MySQL: Reorder/Reset auto increment primary key?

如果我从我的表中删除一个 ligne 并且在这个表中我有一个自动增量 ID, 从 id=2 的表中删除

之后的表格会是这样的

 ID   | NAme
1        aaa
3        cccc

我怎样才能把ID改成这样

ID   | NAme
1        aaa
2        cccc
3        dddd  

【问题讨论】:

  • 我不知道你为什么要这样做,ID 自动递增是有原因的。
  • 当然,您不会想要这样做。这可能会导致危险的混乱......
  • +1 提出非常好的问题
  • 这有一个严重的缺点,您或 DBMS 必须在删除记录后重新组织所有记录。不仅如此,如果 ID 是您的主键,所有依赖表也需要更新(以保持参照完整性)。一般primary keys should never change.

标签: mysql sql auto-increment


【解决方案1】:

【讨论】:

  • 我认为这是错误的做事方式。想到了错误的数据库设计。永远不需要重新评估自动增量字段。
  • 这是评论,不是答案。应该被选为重复的问题。
  • 这不是一个解决方案。不好的做法!
【解决方案2】:

自动增量不能以这种方式工作。如果您在 ID 为 1 和 2 的表上有 2 条记录,并且您删除了 ID 为 2 的记录,那么下一条记录将始终为 3。

出于您需要的原因,建议您添加包含这些值的附加列。

另外,我很久以前在学校了解到,在伟大的系统中,永远不会删除记录。有一列包含时间戳值,将它们标记为“已删除”。

【讨论】:

  • 软删除是设计决策,而不是规则。它最常用于支持数据仓库。
猜你喜欢
  • 1970-01-01
  • 2019-09-05
  • 2011-01-13
  • 2015-09-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多