【问题标题】:SQLite3 : How to modify fileds'type without data lossSQLite3:如何在不丢失数据的情况下修改字段类型
【发布时间】:2012-03-20 18:44:00
【问题描述】:

在我的项目中,我使用了一个 sqlite 数据库,不幸的是我的朋友出错了。字段类型不正确。 因此,当 'localid' 字段(声明为整数)中的数据大于 2147483647 时,该字段中的所有条目都设置为最大值 2147483647。

alter table/alter column sql 请求不适用于 sqlite,因为它支持 ALTER TABLE 的有限子集:仅重命名和添加新列。

那么如何在不丢失数据的情况下进行更改?正确创建一个新数据库,将所有数据复制到其中并删除旧数据库?

但也许有更好的方法?有人有想法吗?

【问题讨论】:

    标签: sql sqlite database-design


    【解决方案1】:

    像这样继续:

    1. 创建包含构成主字段的临时表 key 和 localid(我认为这也不是 PK)。
    2. 填充临时表
    3. 删除旧列
    4. 添加新列
    5. 通过从临时表中选择来填充新列(+ 可能转换为新类型)。

    如果这样使用列,请不要忘记可能的外键,并记住如果它使转换顺利,可以暂时放松约束(在您的情况下可能不需要)。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-22
    • 1970-01-01
    相关资源
    最近更新 更多