我一直在使用的Postgres,而现在这个触发器会做,但我还没有实现任何触发器呢。我想检查这是否会做我打算做的事情。确认,如果我打算
在日常基础上,我加入新行的表(COPY),并同时更新现有行,如果有一个主键冲突(ON冲突DO UPDATE SET)。然后,我有使用该表和其他几个加入一个物化视图,该视图用于很多报告。
我希望在原来的表已经更新,而不需要我来安排,或手动运行它的物化视图进行更新。 (现在我已经使用Python psycopg2 execute命令安排它)。
CREATE OR REPLACE FUNCTION refresh_mat_view()
RETURNS TRIGGER LANGUAGE plpgsql
AS $$
BEGIN
REFRESH MATERIALIZED VIEW schema_name.materialized_view_name;
RETURN NULL;
END $$;
CREATE TRIGGER refresh_view
AFTER INSERT OR UPDATE OR DELETE OR TRUNCATE
ON sutherland.dimension_peoplesoft FOR EACH STATEMENT
EXECUTE PROCEDURE refresh_mat_view();
那会刷新每个单行这是更新过的观点?我只是想象它会触发每个行可能100k +刷新。这将是更好的情况发生,毕竟刀片已经完成(我有Python中的每一行循环的熊猫数据帧到UPSERT到数据库)。
您显示的代码没有帮助。您可以将您的表约束定义为INITIALLY DEFERRED。交易分界也有影响。 – blafasel