如果在Room数据库中添加了新表,是否需要添加迁移?

时间:2018-11-19 09:37:14

标签: android sql android-room

我有两个表,person已经存在(将列userid添加为     外键)

    @Entity(tableName = TABLE_NAME)
    data class Person(
    @PrimaryKey @ColumnInfo(name = CLIENT_ID) var id: Long,
    @ColumnInfo(name = USER_ID)var userId : Int = 1) : Parcelable {}

    这是新添加的类,具有人的外键     类(用户ID)

    @Entity(tableName = Profile.TABLE_NAME,
    foreignKeys = [ForeignKey(entity= Person::class,
    parentColumns = [(Person.USER_ID)],
    childColumns = [(Profile.USER_ID)],
    onDelete = ForeignKey.CASCADE)])
    @Parcelize
    data class Profile(@PrimaryKey(autoGenerate = true)
    var userId: Int,
    var name: String? = null):Parcelable{}

    这里我在数据库中有两个表。     现在,我需要编写迁移代码来创建新表吗?

1 个答案:

答案 0 :(得分:1)

如果要将数据从以前的版本迁移到新版本 然后

  

是的。您必须编写迁移代码。

如果您只想迁移架构而不是数据。 则无需编写迁移逻辑。只需在“房间”构建器中添加fallbackToDestructiveMigration()

示例:

Room.databaseBuilder(appContext, AppDatabase.class, AppDatabase.DATABASE_NAME)
            .fallbackToDestructiveMigration()
            .build();