我需要在删除一些行后按顺序重新排序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
怎么了?
答案 0 :(得分:1)
VACUUM无法保证重新排序rowid
值,如果有一些INTEGER PRIMARY KEY列,则永远不会。
如果您想拥有rowid
的特定值,则必须手动设置它们。
请注意,在大多数情况下,最好只在rowid
序列中留下空白。