2013-03-09 71 views
1

我有SQLite的Android應用程序,並在創建表時,請使用以下行:你可以更改SQLite(Android)中的_id autoincrement字段嗎?

_id integer primary key autoincrement 

我的問題是,我可以做這行的更新,如果我的用戶想改變_id?因此,舉例來說,我有兩個記錄在數據庫:

1 My First Record 
2 My Second Record 
我更新後

現在,我想是這樣的:

1 My First Record 
38 My Second Record 

威爾的SQLite允許這一點,並容易適應?即自動處理的下一個主鍵將是#39?

+0

我不知道,如果這樣的事情是可以或不可以,但你不應該更改值,即使它可能。要實現這樣的事情,請考慮創建您自己的ID字段。 – yugidroid 2013-03-09 16:53:39

回答

5

作爲documented,更改_id是允許的,並會正確更新自動增量序列。

試試看:

$ sqlite3 
SQLite version 3.7.16 2013-01-11 09:58:54 
Enter ".help" for instructions 
Enter SQL statements terminated with a ";" 
sqlite> CREATE TABLE MyTable(_id INTEGER PRIMARY KEY AUTOINCREMENT); 
sqlite> INSERT INTO MyTable DEFAULT VALUES; 
sqlite> INSERT INTO MyTable DEFAULT VALUES; 
sqlite> UPDATE MyTable SET _id = 38 WHERE _id = 2; 
sqlite> INSERT INTO MyTable DEFAULT VALUES; 
sqlite> SELECT * FROM MyTable; 
1 
38 
39 
0

如果你想做這樣的事情,你必須自己管理自動增量。 SQLite將而不是允許您更改自動生成字段的值。另一種方法是添加另一個字段並使用它。

此外,如果有某種解決方法,我可以向你保證這不是一個好的做法。

0
  1. 不應該以這種方式修改主鍵,例如,想到外鍵等Sqlite不會允許這樣做。
  2. 除此之外,自動遞增計數器存儲在一個單獨的表中,不知道你在做什麼。即使允許更改主鍵,計數器也不會受到影響。
相關問題