我需要在android中的Realm
数据库中添加自动增量键字段。
我怎样才能做到这一点?
这可能吗?
提前致谢。
答案 0 :(得分:11)
Relam
目前不支持auto_increment
你可以像这样解决问题
realm.executeTransaction(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
// increment index
Number num = realm.where(dbObj.class).max("id");
int nextID;
if(num == null) {
nextID = 1;
} else {
nextID = num.intValue() + 1;
}
dbObj obj = realm.createObject(dbObj.class, nextID);
// ...
}
}
答案 1 :(得分:1)
Java绑定尚不支持主键,但它位于路线图上且具有高优先级 - 请参阅:https://groups.google.com/forum/#!topic/realm-java/6hFqdyoH67w 。作为一种解决方法,您可以使用这段代码生成密钥:
int key;
try {
key = realm.where(Child_pages.class).max("id").intValue() + 1;
} catch(ArrayIndexOutOfBoundsException ex) {
key = 0; // when there is no object in the database yet
}
我使用singleton factory for generating primary keys作为更通用的解决方案,具有更好的性能(无需每次都查询max("id")
)。
如果您需要更多上下文,可以在Realm Git Hub中进行长时间的讨论:Document how to set an auto increment id?