迁移自动生成主键
Migrating auto generate primary key
如何迁移之前未设置为自动生成的主键字段?
来自
@PrimaryKey
private int id;
到
@PrimaryKey(autoGenerate=true)
private int id;
由于 Sqlite 不支持更改列,我唯一的猜测是按原样迁移整个 table 并重置约束。
我什至需要在开发过程中迁移数据库,还是可以重建它,因为我的数据库会快速变化,所以我不必每次都迁移?
我建议您改变方法:添加唯一标识符 (UID) 作为识别记录的替代方法。
您可以在您的 POJO 上定义带有注释 Entity
的 UID。
@Entity(indices={@Index(value="uid", unique=true)})
publi class Pojo {
..
public String uid;
..
}
当您在数据库中插入一条记录时,您可以使用以下方式定义 uid 字段:
String uuid = UUID.randomUUID().toString();
您可以使用 UUID 字段以绝对方式标识您的记录。当您从一个版本迁移到另一个版本时,您不会使用旧 ID,您始终可以使用 UID。
如何迁移之前未设置为自动生成的主键字段? 来自
@PrimaryKey
private int id;
到
@PrimaryKey(autoGenerate=true)
private int id;
由于 Sqlite 不支持更改列,我唯一的猜测是按原样迁移整个 table 并重置约束。
我什至需要在开发过程中迁移数据库,还是可以重建它,因为我的数据库会快速变化,所以我不必每次都迁移?
我建议您改变方法:添加唯一标识符 (UID) 作为识别记录的替代方法。
您可以在您的 POJO 上定义带有注释 Entity
的 UID。
@Entity(indices={@Index(value="uid", unique=true)})
publi class Pojo {
..
public String uid;
..
}
当您在数据库中插入一条记录时,您可以使用以下方式定义 uid 字段:
String uuid = UUID.randomUUID().toString();
您可以使用 UUID 字段以绝对方式标识您的记录。当您从一个版本迁移到另一个版本时,您不会使用旧 ID,您始终可以使用 UID。