Database.Persist和`lastUpdate`字段

时间:2015-09-24 07:57:55

标签: haskell yesod persistent

据我所知Database.Persist不处理任何自动更新的字段(Yesod Book Persistent)。

但是存在一个特殊情况是相关的(至少对我而言:P)它是lastUpdate :: UTCTime字段(我喜欢它并且我广泛用于了解数据变化)。

此外,此更新必须在数据库级别执行(如果不是,所有服务器应完全同步[它的硬性和弱]并且记录更新应在内部事务中完成以包含在其中getTime系统调用[效率低下])。

我目前的解决方法是创建(手动)触发器。

你知道更好的方法吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

由于看起来对您很重要,依赖数据库的now()是最安全的,因为这将始终使用事务的开头作为返回值。如果您计算在应用程序本身的时间里,你必须非常小心地在任何地方传递相同的值。

您可以查看Haskell的esqueleto库,以便以这样一种方式编写sql,使您对set列始终进行额外的lastUpdate调用。我不认为它当前暴露了sql now()函数,所以你可能想把它自己添加到lib。