【问题标题】:When to use Datomic Upsert?何时使用 Datomic Upsert?
【发布时间】:2020-08-11 10:06:20
【问题描述】:

我指的是:db/unique :db.unique/identity (相对于:db.unique/value

在我的天真中对我进行更新听起来有点可怕,因为如果我尝试为现有记录插入一个具有相同值(对于声明为唯一的字段)的新记录,我的感觉是我 希望失败。

如果一个字段被声明为唯一,我会做的是,在创建或更新另一条记录时,检查该值是否被采用,以及是否向用户反馈它已被采用。

我缺少关于 upsert 的什么以及它何时/为什么有用?

搜索显示以下内容(与 datomic 无关)

“upsert 有助于避免创建重复记录,并且可以节省您的时间(如果插入一个组),因为您不必先确定哪些记录存在”。

我不明白的是,datomic 文档有时会建议使用它,但我不明白为什么它在任何方面都更好。以允许碰撞为代价节省时间?

例如,如果我有一个用户注册系统,我绝对不想在用户提交的电子邮件上“更新”。我想不出什么情况下它会有用——除了上面引用的那个,如果你有大量的东西并且你“没有时间”首先检查它们是否存在。

【问题讨论】:

    标签: clojure upsert datomic


    【解决方案1】:

    Datomic 属性:db/unique 可以与:db.unique/identity:db.unique/value 一起使用

    如果它与:db.unique/identity 一起使用,将更新插入

    如果和:db.unique/value一起使用,会发生冲突。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-10
      • 2017-12-02
      • 1970-01-01
      • 1970-01-01
      • 2013-11-02
      • 1970-01-01
      • 1970-01-01
      • 2022-08-04
      相关资源
      最近更新 更多