1

我有一个带有 SQLite 的 Android 应用程序,并在创建表时使用以下行:

_id integer primary key autoincrement

我的问题是,如果我的用户愿意,我可以对此行进行更新并更改 _id 吗?因此,例如,我将在数据库中有两条记录:

1 My First Record
2 My Second Record

现在在我更新之后,我想要这样的东西:

1 My First Record
38 My Second Record

SQLite 会允许这样做并轻松适应吗?即下一个自动创建的主键将是#39?

4

3 回答 3

5

文件所述,更改_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
于 2013-03-09T19:32:32.700 回答
0

如果你想做这样的事情,你必须自己管理自动增量。SQLite不允许您更改自动生成字段的值。另一种方法是添加另一个字段并使用它。

此外,如果有某种解决方法,我可以向您保证,这不是一个好习惯。

于 2013-03-09T16:18:21.400 回答
0
  1. 你不应该以这种方式修改主键,例如考虑外键等。Sqlite 不允许这样做。
  2. 除此之外,自动增量计数器存储在一个单独的表中,不知道你在做什么。即使允许更改主键,计数器也不会受到影响。
于 2013-03-09T16:22:28.773 回答