我有一个称为price\u changes的物化视图,用于一些报告。我还得到了一个cron任务,通过refresh-materialized-view-price\u-changes刷新物化视图。一切都很顺利
我想给查看报告的用户一条消息“数据从X开始是新的”。当cron运行时,我可以将其存储在某个地方,但postgres是否已经将此元数据存储在某个地方了
从9.3.4开始,我认为系统中没有任何内置的东西提供这种功能。当我需要提供上次刷新的日期时,我会在物化视图中的select查询中添加一个名为“last_refresh”的列,因为物化视图中的数据在刷新之前不会更改
出于安全原因,我也更喜欢这样做,因为如果信息存储在系统表中,您可能不想让sql用户访问系统表
根据您是否需要时间,您可以使用:
当前日期now()
日期:
创建物化视图mv\U地址作为
选择*,当前\u日期作为上次\u从地址刷新
日期和时间:
创建物化视图mv\U地址作为
选择*,now()作为上次从地址刷新
更新2017-02-17:
PostgreSQL 9.4+版现在同时包含选项。如果同时使用刷新物化视图选项,请注意@Smudge在注释中指示的内容。这实际上只是大型且经常更新的数据集的问题。如果您的数据集很小或很少更新,那么您应该不会有问题