1

如果您没有指定主键,SQLite3 会为每个表提供一个名为 rowid 的默认主键。但是,依赖它似乎有一些缺点:

VACUUM 命令可能会更改没有显式 INTEGER PRIMARY KEY 的表中条目的 ROWID。

http://www.sqlite.org/lang_vacuum.html

我想更改现有的 SQLite3 数据库以使用显式主键而不是隐式 rowid,因此我能够在必要时运行真空。我可以在不重建整个数据库的情况下做到这一点吗?

4

1 回答 1

1

您不需要重建整个数据库。但是,由于 SQLite 不支持 ALTER TABLE 语句,您需要:

  1. 创建具有正确架构的临时表
  2. 将原始表中的所有数据复制到临时表中
  3. 删除原表
  4. 重命名临时表

我建议您使用SQLiteman等应用程序为您执行此操作。

于 2010-01-15T05:14:52.057 回答