据我所知Database.Persist
不处理任何自动更新的字段(Yesod Book Persistent)。
但是存在一个特殊情况是相关的(至少对我而言:P)它是lastUpdate :: UTCTime
字段(我喜欢它并且我广泛用于了解数据变化)。
此外,此更新必须在数据库级别执行(如果不是,所有服务器应完全同步[它的硬性和弱]并且记录更新应在内部事务中完成以包含在其中getTime
系统调用[效率低下])。
我目前的解决方法是创建(手动)触发器。
你知道更好的方法吗?
谢谢!
答案 0 :(得分:0)
由于看起来对您很重要,依赖数据库的now()
是最安全的,因为这将始终使用事务的开头作为返回值。如果您计算在应用程序本身的时间里,你必须非常小心地在任何地方传递相同的值。
您可以查看Haskell的esqueleto库,以便以这样一种方式编写sql,使您对set
列始终进行额外的lastUpdate
调用。我不认为它当前暴露了sql now()
函数,所以你可能想把它自己添加到lib。