删除某些行时SQlite重新排序整数自动递增

删除某些行时SQlite重新排序整数自动递增,sqlite,key,auto-increment,Sqlite,Key,Auto Increment,我有一个SQLite数据库,它有一个名为Bookmarks的表。 此表有一个名为Id的整数自动增量列 假设这张表中有三行,如下所示: Id | Name 1 | Bookmark 1 2 | Bookmark 2 3 | Bookmark 3 Id | Name 1 | Bookmark 1 2 | Bookmark 3 如果我删除第2行,则得到以下结果: Id | Name 1 | Bookmark 1 3 | Bookmark 3 任何人都知道我如何重新排列Id序列以获得

我有一个SQLite数据库,它有一个名为Bookmarks的表。 此表有一个名为Id的整数自动增量列

假设这张表中有三行,如下所示:

Id | Name
1  | Bookmark 1
2  | Bookmark 2
3  | Bookmark 3
Id | Name
1  | Bookmark 1
2  | Bookmark 3
如果我删除第2行,则得到以下结果:

Id | Name
1  | Bookmark 1
3  | Bookmark 3
任何人都知道我如何重新排列Id序列以获得如下结果:

Id | Name
1  | Bookmark 1
2  | Bookmark 2
3  | Bookmark 3
Id | Name
1  | Bookmark 1
2  | Bookmark 3

只是一个观察:我已经知道如何恢复sqlite_序列表序列。

为什么要更改主键?你想解决的实际问题是什么?首先,确保你需要它,正如CL正确指出的那样。如果这样做,您可以创建一个新表作为副本,并动态重新生成自动增量列:
create new_table(Id INTEGER主键自动增量,Name TEXT);插入到新的_表中,从旧的_表中选择名称;放下旧桌子;将新表重命名为旧表,但请注意,对于大型表来说,这将非常耗时,而且您必须有足够的可用磁盘空间来执行此操作。这不是每次删除行都应该执行的操作。