【问题标题】:Why Realm don't support auto increment primary key?为什么 Realm 不支持自增主键?
【发布时间】:2016-10-27 16:23:11
【问题描述】:

不实现该功能有什么利弊吗?

我知道有一些solutions 存在并且在路线图上,但该决定背后是否有任何我们未授予的优势?

【问题讨论】:

  • 我认为还有更重要的事情要做,考虑到你可以用 6 行代码设置自动增量主键
  • 是的,但是,它通常是开箱即用的东西之一,所以我想我们一定缺少一些东西......对吗?
  • 您要解决的用例是什么?可能有比自动递增主键更好的选择。
  • @Michael ... 用例?实际上,只是想知道该设计决策是否缺少某些东西。更好的选择...?比如什么?
  • 喜欢 UUID?它不依赖于存储的任何 ID,但对于任何常见情况来说都足够独特。

标签: realm


【解决方案1】:

在 Github 上的讨论中(请参阅 realm/realm-cocoa#2591),Realm 团队表示没有计划支持任何自动增量字段,即使开发人员可以使用几行代码来实现此功能,如您所说。

来自讨论中的 Realm 成员:

我们决定不支持此功能,因为我们无法支持从多个进程同时访问它。

就是这样。

【讨论】:

  • 这有点奇怪。它们确实支持写事务期间的多进程锁定。
  • 一个更重要的问题是自动递增密钥不适用于跨设备的离线同步。此外,Realm 不需要用于关系的键,这是它们存在于 SQL 中的主要原因。另外两个用例是sort after createdkey for lookup。如果您想根据对象的创建时间进行排序,则可以使用Date created = new Date()。如果它有一个唯一的密钥以便于查找String id = UUID.random().toString(); 将起作用。
  • 谢谢,我认为如果他们让新人(比如来自 SQL 世界的我)从文档中了解这一点会很棒。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-20
相关资源
最近更新 更多