我有一个带有SQLite的Android应用程序,并在创建表时使用以下行:
_id integer primary key autoincrement
我的问题是,如果我的用户想要,我可以对此行进行更新并更改_id吗?因此,例如,我将在DB中有两条记录:
1 My First Record
2 My Second Record
现在我的更新后,我想要像:
1 My First Record
38 My Second Record
SQLite是否允许这样做并轻松适应?即自动处理的下一个主键是#39?
答案 0 :(得分: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
答案 1 :(得分:0)
如果你想做这些事情,你必须自己管理自动增量。 SQLite将不允许您更改自动生成字段的值。另一种方法是添加另一个字段并使用它。
另外,如果有某种解决方法,我可以向你保证这不是一个好习惯。
答案 2 :(得分:0)