3
我可以使用领域迁移脚本中的新主键更改旧主键吗?Android:更改领域迁移中的旧主键
我可以使用领域迁移脚本中的新主键更改旧主键吗?Android:更改领域迁移中的旧主键
是的,这是可能的。
RealmObjectSchema objectSchema = schema.get("MyObject");
objectSchema.addField("newId", long.class)
.transform(new RealmObjectSchema.Function() {
@Override
public void apply(DynamicRealmObject obj) {
obj.setLong("newId", getNewId(obj));
}
})
.removeField("id")
.renameField("newId", "id")
.addPrimaryKey("id");
但是,你不能直接创建字段作为
objectSchema.addField("newId", long.class, FieldAttribute.PRIMARY_KEY)
,因为值在数据库中,这意味着你会违犯创建约束初始化为0。因此,只有在设置了值之后,您才必须添加主键约束。
在你的情况,
RealmObjectSchema objectSchema = schema.get("MyObject");
objectSchema.addField("newId", long.class)
.transform(new RealmObjectSchema.Function() {
@Override
public void apply(DynamicRealmObject obj) {
obj.setLong("newId", getNewId(obj));
}
})
.removePrimaryKey()
.addPrimaryKey("newId");
不想删除现有的域。我想通过删除旧的主键约束来添加具有主键约束的新字段 –
哦,那也行 – EpicPandaForce