0

删除一些行后,我需要按顺序重新排序 rowid。桌子上的真空似乎很适合这种情况,但由于某些原因,它不会重新排序 rowid。

sqlite> .schema inboxmessages 
CREATE TABLE InboxMessages(id text not null, title text not null, text text not null, senders_username text not null, created_at text not null, sender_image text not null, read text not null, Unique(id));

sqlite> select rowid, id from inboxmessages limit 5;
1|746915
3|746540
4|746195
5|745403
6|745371
sqlite> vacuum inboxmessages;
sqlite> select rowid, id from inboxmessages;
1|746915
3|746540
4|746195
5|745403
6|745371

怎么了 ?

4

1 回答 1

1

VACUUM不能保证重新排序rowid值,如果有一些 INTEGER PRIMARY KEY 列,它永远不会。

如果你想为你rowid的 s 设置特定的值,你必须手动设置它们。

请注意,在大多数情况下,最好在rowid序列中留下空白。

于 2014-11-26T09:10:37.153 回答