Android:更改领域迁移中的旧主键 [英] Android: Change old primary key in realm migration
本文介绍了Android:更改领域迁移中的旧主键的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我可以在领域迁移脚本中用新的主键更改旧的主键吗?
Can I change old primary key with new primary key in realm migration script?
推荐答案
是的,有可能.
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");
但是,您不能直接将字段创建为
However, you can't directly create the field as
objectSchema.addField("newId", long.class, FieldAttribute.PRIMARY_KEY)
因为在数据库中将值初始化为0,这意味着您将违反创建的约束.因此,只有在设置了值之后,才必须添加主键约束.
because the values are initialized to 0 in your database, which means you'll be violating the constraint on creation. So you must add the primary key constraint only after the values are set.
就您而言,
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");
这篇关于Android:更改领域迁移中的旧主键的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文