我正试图在Postgres数据库中构建一个摘要表,其中包含各种物化视图何时刷新的信息。我还希望这个表能够触发实际的刷新。
所需的表格格式如下,称之为mv_refresh_monitor
:
view_name | refresh_time_start | refresh_ttime_end |
---|---|---|
view_one | 2022-02-01 22:10:59.234567 | 2022:02-01 22:11:59.234567
我认为你在触发器/函数中做得太多是错误的。我会选择:
-
为其提供视图名称和开始名称的函数。它执行
REFRESH MATERIALIZED VIEW some_view>
并用信息更新mv_refresh_monitor
。有关如何对此进行参数化的信息,请参阅动态查询 -
有关
CURRENT_TIMESTAMP
问题,请参阅当前日期/时间。CURRENT_TIMESTAMP
通过设计捕获事务开始时的时间戳,并且在事务中不改变。您正在寻找transaction_timestamp()/statement_timestamp()
。 -
如果不将
REFRESH MATERIALIZED VIEW
与UPDATE
绑定,则可以消除此问题。