我有一个称为price_changes
的materialized 视图,用于一些报告.我还有一个cron任务,用refresh materialized view price_changes
刷新materialized 视图.一切都很顺利.
我想给查看报告的用户一条信息"数据从X开始是 fresh 的".当cron运行时,我可以将其存储在某个地方,但postgres是否已经将此元数据存储在某个地方了?
我有一个称为price_changes
的materialized 视图,用于一些报告.我还有一个cron任务,用refresh materialized view price_changes
刷新materialized 视图.一切都很顺利.
我想给查看报告的用户一条信息"数据从X开始是 fresh 的".当cron运行时,我可以将其存储在某个地方,但postgres是否已经将此元数据存储在某个地方了?
从9.3.4开始,我不认为系统中有任何东西可以提供这种功能.当我需要提供上次刷新的日期时,我会在materialized 视图中的select查询中添加一个名为"last_refresh"的列,因为materialized 视图中的数据在刷新之前不会更改.
出于安全原因,我也更喜欢这样做,因为如果信息存储在系统表中,您可能不想让sql用户访问系统表.
根据您是否需要时间,您可以使用:
CURRENT_DATE
now()
刚刚约会:
CREATE MATERIALIZED VIEW mv_address AS
SELECT *, CURRENT_DATE AS last_refresh FROM address;
日期和时间:
CREATE MATERIALIZED VIEW mv_address AS
SELECT *, now() AS last_refresh FROM address;
Update 2017-02-17:
PostgreSQL 9.4+版现在包含CONCURRENTLY
个选项.如果使用REFRESH MATERIALIZED VIEW CONCURRENTLY
选项,请注意@Smudge在注释中的指示.这实际上只会是大型且经常更新的数据集的问题.如果你的数据集很小或很少更新,那么你应该没事.