postgresql - 如何使用从属 View 更改物化 View

标签 postgresql sql-view materialized-views

我目前有一系列用于报告的物化 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/

相关文章:

sql-server - SQL Server 索引 View 与连接不工作的 View 匹配

sql - Exists 与 In 的物化 View 性能

java - 如何在 Spring JPA 中使用 SQL View ?

.net - SQL Server View 在 Entity Framework 中返回不同的结果

mysql - 如何在 phpMyAdmin 或其他程序中查看用于创建 View 的原始 MySQL?

sql - Postgres EXPLAIN ANALYZE 比正常运行查询快得多

sql - 每晚执行 PostgreSQL 脚本

python - 如何使用 Django 正确设置自定义用户模型和多个数据库?

ruby-on-rails-3 - 无法连接到 rails 3.2 中的两个 postgres 数据库。

sql - 如何外部连接两个表(主表和多对一子表)以仅从第二个表中获取一个项目?