2012-09-17 41 views
1

我已經設法通過遵循一些教程在iOS應用程序中創建SQLite數據庫。我最初期望依靠主鍵。當時我不知道在SQLite中刪除或重新創建主鍵是不可能的,現在我的應用程序非常龐大,爲了使它工作,我需要主鍵保持「有序」。iOS中的SQLite數據庫應用程序和表ID

我正在開發一個任務管理器作爲練習,我直接從數據庫加載數據到TableView,當我刪除一行時,我需要修復主鍵索引。

目前,這是當我刪除的行會發生什麼:

ID TXT STAT 
1 some_text 1 
2 some_text 1 
4 some_text 1 

正如你所看到的主鍵ID之後我刪除的行是跳躍的數字,我怎麼可以讓它至1 2 3等再一次?

我真的不在乎,如果解決方案,您現在浪費太多的資源,這只不過是一個練習,我需要它的工作:(!我不會犯這樣的錯誤再次)d

謝謝。

回答

2

首先,增加由全部ID偏移比任何用過的ID大:

UPDATE mytab SET ID = ID + 1000 

然後ID設置的記錄數可達此一:

UPDATE mytab SET ID = (SELECT COUNT(*) FROM mytab t2 WHERE t2.ID <= mytab.ID) 

(該第一個UPDATE的原因是爲了避免衝突,其中一個記錄的新ID與另一個記錄的舊ID相同。)

+0

問題已修復!非常感謝!!謝謝;) – TCB13

+0

有沒有辦法將表格的自動增量更改回下一個數字? – TCB13

+0

通過修改[sqlite_sequence](http://www.sqlite.org/fileformat2.html#seqtab)表。 –

相關問題