问题描述
我指的是:db/unique :db.unique/identity
(与:db.unique/value
相对)
天真地对我进行更新听起来有点吓人,因为如果我尝试插入与现有记录具有相同值(对于声明为唯一的字段)的新记录,我的感觉是我 想要 失败。
如果某个字段被声明为唯一字段,我将要做的是,在创建或更新另一条记录时,检查该值是否被接受,以及是否向用户提供该值的反馈。
关于upsert我缺少什么?何时/为什么有用?
搜索显示以下内容(与原子学无关)
“ upsert有助于避免重复记录的创建,并且可以节省您的时间(如果插入组),因为您不必确定首先存在哪些记录”。
我不明白的是,有时datic doc文档建议使用此功能,但我不明白为什么它在任何方面都更好。以允许碰撞为代价节省时间?
例如,如果我有一个用户注册系统,我绝对不希望在用户提交的电子邮件中“增补”。我想不出有什么用处的情况-除了上面引用的内容以外,如果您有大量的东西并且“没有时间”检查它们是否首先存在。
解决方法
原子属性:db/unique
可以与:db.unique/identity
或:db.unique/value
一起使用
如果它与:db.unique/identity
一起使用,将向上插入
如果与:db.unique/value
一起使用,将会发生冲突。