2

我在上传文件时使用数据库来命名文件,我的应用程序使用数据库来识别文件(用于视频流),因此它们需要相同。但是,如果上传失败,或者有人取消上传,我会留下一个浪费的 ID。

加班我浪费了更多的 ID 号码然后被使用,我创建了一个脚本,在插入行 5 天后将它们标记为未使用,并且正在考虑制作另一个脚本来使用那些“未使用”的 ID,如果不存在则插入一个新的排。但是当我有多台服务器执行该任务时,我可以看到问题。

我可以删除一行并在以后的自动增量中重新使用该行的 ID 吗?

我对完成此任务的其他方式持开放态度,但如果我可以在未来的自动增量中重新使用已删除的 ID。

4

2 回答 2

2

如果您删除该行,您可以运行

ALTER TABLE yourtable AUTO_INCREMENT = 1

重新设置自动递增以从最后一个未使用的 ID 开始,但我没有看到这样做的意义。如果您这样做是为了数据库,请不要这样做。数据库不在乎。

于 2013-03-06T18:04:51.900 回答
1

如果是为了数据库,我会 +1“不要”,因为真的,它根本不在乎。话虽如此,我还是这样做了,因为我有点像一个整洁的怪胎,我会给你一个例子来说明我为什么决定这样做。

我为音乐家创建了一个服务,它使用 auto_increment 作为歌曲、购买和其他一些东西的索引参考,并且与大多数具有注册表单和邮件功能的应用程序一样,它被机器人、垃圾邮件发送者等制造了大量的和大量的免费帐户,它们经常被删除(cron 选项卡大约每 3 天自动清理一次),而我最终得到的是非常不一致的计数。1 到 41,然后 129 到 240,然后 491 到 800,依此类推。

“缩小差距”更像是个人偏好,因为正如我所说,我有点像一个整洁的怪胎,我喜欢一致性。我还必须为想要跟踪数据并且喜欢一致性的经理等打印报告,所以这很有帮助。

至于当自动增量达到一个已经存在的数字时会发生什么?它跳到下一个可用的并继续。这就是为什么您可以将其重置为 1 并且一切都很好。没有造成伤害。

于 2013-11-15T20:34:06.257 回答