我目前有一系列用于报告的物化 View View #1 和 View #2。
使用PGAdmin,我想更改物化 View #1 的代码(只需更改where 子句, View 的结构保持不变),但物化 View #2 是从物化 View #1 生成的。
有没有办法推迟任何检查,以便我可以在不删除每个后续 View 的情况下进行更改?
最佳答案
奈斯...
有一种解决方案可能并不适用于所有情况。重新运行所有依赖对象的创建脚本可能更简单。
因此,虽然在不首先删除物化 View 的情况下无法更改物化 View 的查询,但没有什么可以阻止您将所述查询存储在常规 View 中,并创建调用此常规 View 的物化 View 。然后您可以自由地替换(更新)常规 View ,然后您只需刷新实体化 View 。
create table test_table(id int, txt text);
insert into test_table values (1,'one'),(2,'two');
create or replace view test_view
AS
select id as v_id,
txt as v_txt
from test_table;
create materialized view test_mat_view
AS
select v_id, v_txt from test_view;
select * from test_mat_view;
v_id | v_txt
------+-------
1 | one
2 | two
(2 rows)
create or replace view test_view
AS
select id as v_id,
'constant' as v_txt
from test_table;
REFRESH materialized view test_mat_view;
select * from test_mat_view;
v_id | v_txt
------+----------
1 | constant
2 | constant
drop table test_table cascade;
关于postgresql - 如何使用从属 View 更改物化 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63074692/