如何在持久性中进行原子upsert?
Haven设法找到使用持久API进行upsert,插入或更新操作的方法。 insertBy之后的更新似乎是最接近的东西。但如果我没有理解错误,那就不会是原子的,因此容易出现竞争条件。
答案 0 :(得分:4)
persistent
的最新版本支持upsert
:
upsert :: (MonadIO m, PersistEntityBackend val ~ backend, PersistEntity val)
=> val -> [Update val] -> ReaderT backend m (Entity val)