2013-03-06 19 views
2

我正在使用數據庫來命名文件上傳時,和我的應用程序使用數據庫來識別文件(視頻流),所以他們需要一樣。但是,如果上傳失敗,或者有人取消上傳,我會留下一個浪費的ID。MySQL和文件管理:在未來的自動增量重用刪除的ID

加班我有更多的浪費的ID號碼,然後被使用,我創建了一個腳本,標記插入行5天后未使用的腳本,並且正在考慮讓另一個腳本使用這些「未使用」的ID,如果沒有存在插入新行。但是當我有多臺服務器完成這個任務時,我可以看到問題。

我可以刪除一行並讓該行中的ID在未來的自動增量中被重新使用嗎?

我接受其他方式來完成此任務,但如果我可以在將來自動增量中重新使用已刪除的ID。

回答

2

如果刪除該行可以運行

ALTER TABLE yourtable AUTO_INCREMENT = 1 

重新設置自動增加在最後未使用的ID開始,但我不明白這一點在做這個。如果你爲了數據庫而這樣做,不要。數據庫不關心。

+0

+1表示「不要」評論。 – Barmar 2013-03-06 18:12:42

+0

但是,如果你這樣做,在那之後發生的UID會發生什麼。 – 2013-03-06 18:26:13

+0

它不會覆蓋任何數據。如果你有1,2,4,5的ID和刪除5然後運行該命令它將從5開始,並忽略3. – 2013-03-06 19:04:25

1

如果是爲了數據庫的緣故,我會爲「不要」+1,因爲實際上,它根本不在乎。就這樣說,我無論如何都是因爲我是一個整潔的怪胎,我會給你一個我爲什麼決定去做的例子。

我爲音樂家創建了一項服務,它使用auto_increment作爲歌曲,購買和其他一些東西的索引參考,與大多數具有註冊表單和郵件功能的應用程序一樣,它被bot,botmers和比如誰創建了大量的免費賬戶,並且他們經常被刪除(cron選項卡大約每3天就會自動清理一次),最終我得到的結果非常不一致。 1至41,然後是129至240,然後是491至800,依此類推。

這更像是個人的偏好,因爲如我所說,我是一個整潔的怪胎,我喜歡一致性。我還必須打印出管理員等需要跟蹤數據的報告,並且他們喜歡一致性,所以它有很大的幫助。

至於在自動增量遇到已經退出的數字時會發生什麼?它跳到下一個可用的並繼續。這就是爲什麼你可以將它重置爲1並且一切都很酷。沒有傷害完成。