如果您没有指定主键,SQLite3 会为每个表提供一个名为 rowid 的默认主键。但是,依赖它似乎有一些缺点:
VACUUM 命令可能会更改没有显式 INTEGER PRIMARY KEY 的表中条目的 ROWID。
http://www.sqlite.org/lang_vacuum.html
我想更改现有的 SQLite3 数据库以使用显式主键而不是隐式 rowid,因此我能够在必要时运行真空。我可以在不重建整个数据库的情况下做到这一点吗?
如果您没有指定主键,SQLite3 会为每个表提供一个名为 rowid 的默认主键。但是,依赖它似乎有一些缺点:
VACUUM 命令可能会更改没有显式 INTEGER PRIMARY KEY 的表中条目的 ROWID。
http://www.sqlite.org/lang_vacuum.html
我想更改现有的 SQLite3 数据库以使用显式主键而不是隐式 rowid,因此我能够在必要时运行真空。我可以在不重建整个数据库的情况下做到这一点吗?
您不需要重建整个数据库。但是,由于 SQLite 不支持 ALTER TABLE 语句,您需要:
我建议您使用SQLiteman等应用程序为您执行此操作。