持久的Upsert

时间:2013-12-12 19:56:12

标签: haskell yesod persistent

如何在持久性中进行原子upsert?

Haven设法找到使用持久API进行upsert,插入或更新操作的方法。 insertBy之后的更新似乎是最接近的东西。但如果我没有理解错误,那就不会是原子的,因此容易出现竞争条件。

1 个答案:

答案 0 :(得分:4)

persistent的最新版本支持upsert

upsert :: (MonadIO m, PersistEntityBackend val ~ backend, PersistEntity val)     
       => val -> [Update val] -> ReaderT backend m (Entity val)