Realm Auto Increament字段示例

时间:2015-07-05 10:07:53

标签: android realm

我需要在android中的Realm数据库中添加自动增量键字段。 我怎样才能做到这一点? 这可能吗?

提前致谢。

2 个答案:

答案 0 :(得分:11)

Relam目前不支持auto_increment

GitHub

上查看此问题

你可以像这样解决问题

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?