我正在开发一个使用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
。我在其中测试了vacuum语句,并且ROWID已经更新。罪魁祸首可能是版本吗?或者它可能是pysqlite的错误?
提前感谢任何想法或建议!
答案 0 :(得分:0)
此行为取决于版本。
如果您想要保证重新排序,则必须自己将所有记录复制到新表中。 (这适用于隐式和显式ROWID。)