从表中删除后自动递增[重复]
Posted
技术标签:
【中文标题】从表中删除后自动递增[重复]【英文标题】: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. 【参考方案1】:自动增量不能以这种方式工作。如果您在 ID 为 1 和 2 的表上有 2 条记录,并且您删除了 ID 为 2 的记录,那么下一条记录将始终为 3。
出于您需要的原因,建议您添加包含这些值的附加列。
另外,我很久以前在学校了解到,在伟大的系统中,永远不会删除记录。有一列包含时间戳值,将它们标记为“已删除”。
【讨论】:
软删除是设计决策,而不是规则。它最常用于支持数据仓库。【参考方案2】:看看这个答案:Reorder / reset auto increment primary key
【讨论】:
我认为这是错误的做事方式。想到了错误的数据库设计。永远不需要重新评估自动增量字段。 这是评论,不是答案。应该被选为重复的问题。 这不是一个解决方案。不好的做法!以上是关于从表中删除后自动递增[重复]的主要内容,如果未能解决你的问题,请参考以下文章