触发函数刷新Postgres物化视图并捕获刷新结束时间



我正试图在Postgres数据库中构建一个摘要表,其中包含各种物化视图何时刷新的信息。我还希望这个表能够触发实际的刷新。

所需的表格格式如下,称之为mv_refresh_monitor:

2022:02-01 22:11:59.234567
view_name refresh_time_start refresh_ttime_end
view_one 2022-02-01 22:10:59.234567

我认为你在触发器/函数中做得太多是错误的。我会选择:

  1. 为其提供视图名称和开始名称的函数。它执行REFRESH MATERIALIZED VIEW some_view>并用信息更新mv_refresh_monitor。有关如何对此进行参数化的信息,请参阅动态查询

  2. 有关CURRENT_TIMESTAMP问题,请参阅当前日期/时间。CURRENT_TIMESTAMP通过设计捕获事务开始时的时间戳,并且在事务中不改变。您正在寻找transaction_timestamp()/statement_timestamp()

  3. 如果不将REFRESH MATERIALIZED VIEWUPDATE绑定,则可以消除此问题。

最新更新