是否可以更改 sqlite db 表中的现有列

Posted

技术标签:

【中文标题】是否可以更改 sqlite db 表中的现有列【英文标题】:Is it possible to make changes in the existing column in a table for sqlite db 【发布时间】:2018-01-29 02:47:00 【问题描述】:

我创建了一个应用程序,它在 Play 商店中运行,它有 3 个表,我想为一个表添加另外两列并从另一个表中删除一列。如果我这样做并将其更新到 playstore 会不会对现有用户数据库造成任何影响,或者他们想要卸载应用程序以获取这些新更改? 如果有什么好的方法可以用来更新表格而不影响用户的数据。

【问题讨论】:

【参考方案1】:

你应该使用 onUpgrade

当数据库需要升级时调用。实施 应该使用此方法删除表、添加表或执行其他任何操作 它需要升级到新的架构版本。

示例

@Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) 
        if (oldVersion < 3) 
              db.execSQL("ALTER TABLE " + TABLE_NAME  + " ADD COLUMN mobile_no INTEGER;");
              db.execSQL("ALTER TABLE " + TABLE_NAME  + " ADD COLUMN phone_no INTEGER;");
        

    

【讨论】:

@Nidhun Kumar 我建议阅读 SQL As Understood By SQLite - ALTER TABLE 关于限制的内容。

以上是关于是否可以更改 sqlite db 表中的现有列的主要内容,如果未能解决你的问题,请参考以下文章

根据表中另一个现有列的内容更改 SQL Server 中的现有列

如何通过更改SQLite3中的现有SQL表通过单个SQL语句添加更多列?

SQLite 替换现有列中的数据

更改现有列,使其从 MYSQL 数据库中的另一个表中提取数据

如何在不包含新列名和类型的情况下更改现有 Hive 表中的列注释?

Grails数据库迁移-将插入值手动更改日志记录到表中的特定列