【问题标题】:SQLite3 and Implicit rowid'sSQLite3 和隐式 rowid 的
【发布时间】:2010-01-15 04:58:52
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: sqlite rowid


    【解决方案1】:

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

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

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

    【讨论】:

    • SQLite 绝对支持 ALTER TABLE。
    • @Bill:你说得对,但你只能用它来添加列或重命名表格。
    猜你喜欢
    • 2023-03-19
    • 1970-01-01
    • 2013-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-27
    • 2018-04-10
    • 1970-01-01
    相关资源
    最近更新 更多