如何从会议室数据库中的表中删除列?

时间:2018-09-06 10:42:20

标签: android android-room

我如何从房间数据库android中的表中删除列。我一直尝试删除和删除的方式。

此代码也不起作用:-

static final Migration MIGRATION_3_4 = new Migration(3, 4) 

{
    @Override
    public void migrate(SupportSQLiteDatabase database) 
{

 database.execSQL("CREATE TABLE users_new (userid TEXT, username TEXT, last_update INTEGER, PRIMARY KEY(userid))");

// Copy the data

 database.execSQL("INSERT INTO users_new (userid, username, last_update) SELECT userid, username, last_update FROM users");

// Remove the old table
 database.execSQL("DROP TABLE users");

// Change the table name to the correct one

 database.execSQL("ALTER TABLE users_new RENAME TO users");

    }
};

1 个答案:

答案 0 :(得分:0)

Android ROOM基于SQL Lite,不允许删除数据库表列。相反,您必须:

  • 创建一个临时表,其中不包含您要删除的列,
  • 将所有记录从旧表复制到新表,
  • 删除旧表,
  • 将新表重命名为与旧表相同的名称

查看相关问题:Sqlite Dropping Column from table