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