Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell 持续上升_Haskell_Yesod_Persistent - Fatal编程技术网

Haskell 持续上升

Haskell 持续上升,haskell,yesod,persistent,Haskell,Yesod,Persistent,如何在持久模式下进行原子升级 尚未找到使用持久API执行upsert、insert或update操作的方法。类似insertBy之后的更新似乎是最接近的事情。但是,如果我没有理解错误,这将不是原子的,因此容易出现竞争条件。最新版本的persistent支持: 我没有答案,但这里有一些有用的事实可能会让你更接近——根据,一个runSqlite调用中的所有内容都是事务性的(这只是sqlite,但页面向我暗示,如果你翻转一个数据库并放入另一个数据库,这仍然是真的)。此外,upsert/merge似乎是

如何在持久模式下进行原子升级


尚未找到使用持久API执行upsert、insert或update操作的方法。类似insertBy之后的更新似乎是最接近的事情。但是,如果我没有理解错误,这将不是原子的,因此容易出现竞争条件。

最新版本的
persistent
支持:


我没有答案,但这里有一些有用的事实可能会让你更接近——根据,一个runSqlite调用中的所有内容都是事务性的(这只是sqlite,但页面向我暗示,如果你翻转一个数据库并放入另一个数据库,这仍然是真的)。此外,upsert/merge似乎是SQL规范的新添加,不同的数据库似乎仍在以不同的方式实现该功能。上面的URL中还有一部分是关于实现自定义数据库特定查询的,因此您可以使用它。+jamshidh关于事务的评论在这里非常重要:因为您在单个事务中完成所有操作,所以多个操作都是原子的,至少对于所有的SQL后端来说是这样。所以对于那些不支持事务的后端,有专门的更新API吗?Persistent2似乎支持upsert。
upsert :: (MonadIO m, PersistEntityBackend val ~ backend, PersistEntity val)     
       => val -> [Update val] -> ReaderT backend m (Entity val)