【发布时间】:2012-04-28 09:28:47
【问题描述】:
我最近read 表示由于 InnoDB 在服务器重新启动时如何重新计算 AUTO_INCREMENT 值,ID 列表高端的任何记录都可能被重用其 ID。
通常,这不是问题,因为当用户被删除时,与该 ID 关联的所有内容也会从其他表中删除。
但我故意让他们的论坛帖子成为孤立的,标记为“由 =User #123= 发布”,以便保留过去的对话。显然,如果一个 ID 被重复使用,这将是一个问题。
我以前从未遇到过这个问题,因为总是有足够多的新用户,因此不太可能以这种方式重复使用 ID。然而,在我的新项目中,注册很少见,并且经常删除非活动用户(特别是因为“开放 Alpha”帐户仅持续三天作为预览),并且这种 ID 重用现在已经发生了三对三。
我通过在别处保存AUTO_INCREMENT 的正确值并使用它而不是依赖内部值来“解决”这个问题。有没有一种方法可以让 InnoDB 记住实际的最后一个值?
【问题讨论】:
-
与其删除账户记录,不如直接清除,改名为“user #11”,并在上面设置一个“deleted”标志?然后,您可以保持参照完整性(并且可以使用 FK),而不必担心 ID 会被重复使用。
标签: mysql innodb auto-increment