为什么在使用python-sqlite3模块时,在VACUUM之后不更新ROWID



我正在开发一个使用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。)

相关内容

最新更新