SELECT *
diperluas pada waktu eksekusi, sama seperti semua operasi serupa (CREATE VIEW
, CREATE TABLE AS
)
Kata kuncinya adalah "pengikatan awal" sebagai lawan dari "pengikatan akhir". Postgres menyimpan daftar kolom yang ada pada waktu eksekusi SELECT *
, kolom yang ditambahkan kemudian adalah bukan disertakan secara otomatis. string kueri itu sendiri tidak disimpan, hanya representasi internal setelah memperluas SELECT *
dan hal-hal lain seperti menyelesaikan semua pengenal.
REFRESH MATERIALIZED VIEW
tidak pernah mengubah definisi data, hanya data:
Manual bisa lebih eksplisit tentang hal itu, tetapi perbandingan dengan perilaku dari CREATE TABLE AS
membuatnya jelas bagi saya: