當我將數據插入到一個全新的表中時,它將通過AUTO_INCREMENT分配一個新的ID。因此,我第一次執行插入操作時,我得到的ID爲1.但是,如果刪除該行並插入新數據,則該表的行爲就好像仍然存在前一行(新行的ID爲2)。這種行爲關係到我,因爲我覺得數據仍然存在於某個地方。任何想法可能是什麼?爲什麼我的sql表維護被刪除的ID?
回答
您的數據不會持續存在。 MySql維護一個關於您的表的獨立表,其中包含您的表的下一個自動增量值。
ALTER TABLE tablename AUTO_INCREMENT = 1
但是,要知道,如果你重新設置下表中的另一個有效的值,你是在自找麻煩:您可以重設此。
如何訪問該信息?每次我清空表格時,我都想從id = 1開始(我正在清空表格的唯一原因是用於實驗和學習目的)。 – tocoolforscool
@ j3ssi3ftw - 請參閱[本主題](http://stackoverflow.com/questions/8923114/how-to-reset-auto-increment-in-mysql)瞭解更多信息。但只要使用'ALTER TABLE'語句就像我在每次清空表格時所建議的那樣。 –
您可以執行'truncate table tablename;'然後'ALTER TABLE tablename AUTO_INCREMENT = 1;'將自動增量重置爲1 – zedfoxus
你應該簡單地使用。
truncate table tablename;
僅供OP考慮:截斷表會將auto_increment字段重置爲其起始值:http://dev.mysql.com/doc/refman/5.7/en/truncate-table.html – zedfoxus
「truncate table」的一個問題如果其他表中的任何外鍵引用表,它將不會在InnoDB或NDB表上工作。它也不會調用任何'ON DELETE'觸發器。否則,它就像刪除所有行並顯式更改表的'AUTO_INCREMENT'值一樣好(並且更快)。 –
我剛剛查了一個truncate的例子,它非常有用,但是要感謝例外。 – tocoolforscool
- 1. 爲什麼我的cookie已被刪除
- 2. 爲什麼我的日誌被刪除?
- 3. 爲什麼我的cookies不被刪除?
- 4. 爲什麼我的SQL Server 2005備份不被刪除?
- 5. 爲什麼我的鏈表的頭節點沒有被刪除?
- 6. 爲什麼我的sql表中的所有記錄都被刪除?
- 7. 爲什麼StringBuilder被刪除?
- 8. 爲什麼io.sort.record.percent被刪除?
- 9. 爲什麼函數調用後我的鏈表被刪除?
- 10. SQL 2005維護清理任務.bak文件未被刪除
- 11. MS SQL 2012刪除備份的維護計劃我想保留
- 12. Select2.js:爲什麼id與被刪除的文本相同?
- 13. 什麼被刪除?
- 14. 什麼是已刪除的函數,爲什麼只有我傳遞文件的函數被視爲已刪除?
- 15. SQL刪除留下的ID未被刪除
- 16. 爲什麼我的通知被清除?
- 17. 爲什麼我的數組被清除?
- 18. 爲什麼我的SQL Server數據在應用程序停止時被刪除?
- 19. 爲什麼從我的eclipse R文件被刪除?
- 20. 爲什麼我的s3對象沒有被刪除
- 21. 爲什麼我的令牌未被刪除?
- 22. 流星 - 爲什麼我的包被刪除?
- 23. 爲什麼我的cookie不會被刪除?
- 24. ElementTree:爲什麼我的名稱空間聲明被刪除?
- 25. 爲什麼我的空白區域被從HTML中刪除?
- 26. 爲什麼我的服務在卸載時被刪除? (WIX)
- 27. 爲什麼表函數找到被刪除的變量
- 28. 爲什麼mysql緩存被刪除臨時表的列名?
- 29. 爲什麼條目不被刪除?
- 30. PHP爲什麼$符號被刪除
你並不孤單,感覺數據持續存在。當我開始使用數據庫時,我也有同樣的感受。一旦你處理了auto_increment字段,你就會習慣於通過id從tablename order中選擇id,name ...。如果您注意到ID 1,3,4 ...,您可以斷定id 2已被刪除。在某些情況下,您必須存檔已刪除的數據,這樣可以更容易地查看刪除的內容。 – zedfoxus