回答
通過查找最低未使用的ID並強制它可能是可能的,但這是非常糟糕的做法,主要是因爲參照完整性:例如,它可能是來自其他表的關係指向已刪除的記錄,如果ID被重新使用,不會被識別爲「已刪除」。
底線:不要這樣做。這是一個非常糟糕的主意。
相關閱讀:Using auto_increment in the mySQL manual
回覆您的更新:即使你有一個正當的理由這樣做,我不認爲有一個自動的方式來重新使用在auto_increment
字段值。如果有的話,你必須找到最低的未使用的值(可能使用存儲過程或外部腳本),並強制將其作爲ID(如果甚至可能的話)。
@Pekka我有類似的場景如果我通過刪除前一個測試我的數據,但它沒有爲我工作,但現在我不得不重用舊數據具有相同的舊ID然後呢? – 2010-04-13 12:21:41
@Parth我不明白你的情況,但是如果你不得不重新使用舊的ID,你很可能會在某處出現設計缺陷。你能否詳細說明你的問題? – 2010-04-13 12:22:38
@Pekka,我跟蹤INsert更新和刪除表中的查詢,我做插入和更新,因爲我不會面對任何問題與ID有任何問題,但一旦執行刪除操作,我失去了唯一的ID可能是在很多地方使用,並重新插入舊數據將使新的ID不同於舊的ID,因此,對於這種情況下,我需要舊ID,以便我可以在其他數據庫中複製具有相同舊ID的查詢 – 2010-04-13 12:27:34
你不應該這樣做。
不要認爲它是一個數字。
這不是一個數字。它是唯一的標識符。想想這個詞 - 獨特。沒有記錄應該用相同的ID來標識。
@Col。你可以將我命名爲「THE DATA TRACKER」:) – 2010-04-13 12:29:00
@Col。你明白了嗎? – 2010-04-13 12:37:16
同意。這不像是一個零散的驅動器,如果它們分散開來,效率就會降低。只要你的id的數據類型可以處理這些值,不用擔心。如果無法處理這些值,請獲取新的數據類型。 – CaseySoftware 2010-04-13 12:48:49
1.
按規定你的解釋「@Pekka,我跟蹤INSERT,UPDATE和DELETE查詢......」我以爲你只是一些想怎麼把你的舊數據恢復到相同的ID。
在這種情況下,您可以考慮在您的表中使用刪除標誌列。
如果爲某行設置了刪除標誌,則應考慮程序將其刪除。此外,您可以通過設置刪除平面(false)來使其可用。
類似的方法是將整行移動到某個臨時表,並且可以在需要時使用相同的數據和ID將其返回。
上一頁。想法雖然更好。
2.
如果這不是你的意思,你的解釋;並且您想要刪除並仍然使用ID(自動生成)的所有值;我有幾個想法可以實現: - 創建一個用於存儲已刪除ID的表(IDSTORE)。 - 創建一個在行刪除時激活的觸發器,它將記錄ID並將其存儲到表中。 - 插入時從IDSTORE獲取最小ID並插入該值。如果IDSTORE爲空,則可以傳遞NULL ID以生成自動增量編號。
當然,如果您已經實現了引用/關係(FK),則必須手動處理它,因爲您的要求如此。
- 1. 如何從mysqldb中刪除sonarqube項目?
- 2. 我的應用程序已從銷售中刪除,我如何重新登記?
- 3. 任何用於從Graph API獲取已刪除ID的API?
- 4. 如何重新初始化已從DOM中刪除的按鈕?
- 5. 我已經刪除它們後,如何從Xcode提示符中刪除文件?
- 6. 使用它們的ID從列表中刪除項目和linq
- 7. 如何使用他們的id刪除javascript中的div元素?
- 8. 我們如何使用$ location從url中刪除「搜索」片段?
- 9. 如何刪除活動記錄中已刪除行的ID
- 10. 如何在parse.com上重新創建已刪除的安裝表
- 11. 我們如何恢復Orchard中的已刪除頁面
- 12. 我們可以重新插入刪除自動遞增ID
- 13. 如何從列表中刪除重複
- 14. Php:我們如何從頁面列表中刪除錨標籤?
- 15. 我們如何從redis中刪除表項?
- 16. 如何從div中刪除錨標記沒有任何id或類使用jQuery?
- 17. 如何使用C#從Excel表中刪除重複的記錄
- 18. 如何使用javascript從URL列表中刪除重複的域
- 19. 如何使用ID刪除實體從谷歌appengine使用ID
- 20. 我們如何更新重複行然後使用vba將其刪除?
- 21. 在ItunesConnect中重複使用已刪除項目的產品ID
- 22. 如何在Rails中重複使用刪除的模型ID號?
- 23. 如何使用mysql在youtube id後刪除任何內容?
- 24. 我如何從表中刪除列
- 25. 無法從表中刪除任何行
- 26. 任何方式從列表中刪除重複的索引?
- 27. 如何從Gitlab中的提交表中刪除任何提交?
- 28. 如何使用scala從列表中刪除重複值?
- 29. 我們如何刪除sybase IQ中的重複行?
- 30. 我們可以再次使用記錄已被刪除的ID嗎?
爲什麼要重複使用IDS? – 2010-04-13 12:17:54
這樣我就可以重新插入舊數據而不影響任何其他進程 – 2010-04-13 12:18:49
只需回滾一個交易然後 – 2010-04-13 12:20:55