説明書より
CREATE MATERIALIZED VIEW は CREATE TABLE AS と似ていますが、ビューの初期化に使用されたクエリも記憶しているため、後で必要に応じて更新できる点が異なります。
私が理解しているように、具体化されたビューを更新すると re と同じ効果が得られるはずcreate view as
です。しかし、それはここで起こることではありません。
列が 1 つのテーブルを作成する
drop table if exists t cascade;
create table t (a int);
insert into t (a) values (1);
マテリアライズド ビューを作成する
create materialized view mat_view_t as
select * from t ;
select * from mat_view_t;
a
---
1
ソーステーブルに列が追加されました
alter table t add column b int;
\d t
Table "public.t"
Column | Type | Modifiers
--------+---------+-----------
a | integer |
b | integer |
そして、具体化されたビューが更新されます
refresh materialized view mat_view_t;
select * from mat_view_t;
a
---
1
\d mat_view_t
Materialized view "public.mat_view_t"
Column | Type | Modifiers
--------+---------+-----------
a | integer |
新しい列はどこにありますか? それは期待される動作ですか?もしそうなら、私はマニュアルが誤解を招くと思います。