【发布时间】:2020-08-11 10:06:20
【问题描述】:
我指的是:db/unique :db.unique/identity
(相对于:db.unique/value)
在我的天真中对我进行更新听起来有点可怕,因为如果我尝试为现有记录插入一个具有相同值(对于声明为唯一的字段)的新记录,我的感觉是我 希望失败。
如果一个字段被声明为唯一,我会做的是,在创建或更新另一条记录时,检查该值是否被采用,以及是否向用户反馈它已被采用。
我缺少关于 upsert 的什么以及它何时/为什么有用?
搜索显示以下内容(与 datomic 无关)
“upsert 有助于避免创建重复记录,并且可以节省您的时间(如果插入一个组),因为您不必先确定哪些记录存在”。
我不明白的是,datomic 文档有时会建议使用它,但我不明白为什么它在任何方面都更好。以允许碰撞为代价节省时间?
例如,如果我有一个用户注册系统,我绝对不想在用户提交的电子邮件上“更新”。我想不出什么情况下它会有用——除了上面引用的那个,如果你有大量的东西并且你“没有时间”首先检查它们是否存在。
【问题讨论】: