2013-02-08 81 views
2

這可能是一個初學者問題,但是當測試我的sqlite數據庫時,我發現當我刪除一行時,行ID在插入新行時不斷增加,並且不會重複使用已刪除行的行ID。那麼,如果行標識達到最大值,而表中的行數更少,會發生什麼?當記錄從表中刪除後,最大行數會減少,因爲行ID不斷增加

+1

http://www.sqlite.org/autoinc.html –

+0

我不認爲這會發生在我死之前,但理論上我可以用完,在表中只有一行:-)。好吧,我不需要擔心,謝謝.. –

回答

3

這是documented

如果表曾擔任一排的最大可能的ROWID,那麼新的刀片是不允許的,任何企圖插入新行會失敗,並SQLITE_FULL錯誤。

如果省略AUTOINCREMENT關鍵字,ID將仍然自動遞增,但可以重複使用,如果你刪除了最後一排,或者如果值溢出:

如果最大ROWID等於最大可能整數(9223372036854775807),那麼數據庫引擎將隨機選擇正候選ROWID,直到找到一個先前未使用的ROWID。

0

當您將行號添加爲自動增量時,您必須檢查最大值。如果數據行達到該限制,則必須使用更大的數據類型。但通常整數不會交叉,因爲數據庫設計人員必須密切關注normalization

如果數據行給出這麼大。你真的堅持查詢。這將需要很長時間。 SQLite主要用於低端設備。他們無法處理大數據。

相關問題