我正在开发一个使用python sqlite3模块的应用程序。我的数据库使用sqlite3提供的隐式ROWID列。我希望在删除一些行并清空数据库后,ROWID会被重新排序。因为在sqlite3官方文档中:
VACUUM命令可以更改任何表中的条目的ROWID没有显式的INTEGER PRIMARY KEY。
我的pysqlite版本是2.6.0
,sqlite版本为3.5.9
。有人能告诉我为什么它不起作用吗?使用真空吸尘器时需要注意什么?
p.S.我安装了一个独立的sqlite,其版本为3.3.6
。我测试了里面的真空声明,ROWID得到了更新。那么罪魁祸首可能是这个版本吗?或者可能是pysqlite的bug?
提前感谢您的任何想法或建议!
此行为取决于版本。
如果您想要有保证的重新排序,您必须自己将所有记录复制到一个新表中。(这适用于隐式和显式ROWID。)