PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

L'aggiornamento di una vista materializzata non include la colonna aggiunta

SELECT * viene ampliato al momento dell'esecuzione, proprio come con tutte le operazioni simili (CREATE VIEW , CREATE TABLE AS )

La parola chiave è "rilegatura anticipata" in contrapposizione a "rilegatura tardiva". Postgres salva l'elenco delle colonne presenti al momento dell'esecuzione di SELECT * , le colonne aggiunte in seguito non incluso automaticamente. La stringa di query stesso non viene salvato, solo la rappresentazione interna dopo espandendo SELECT * e altre cose come la risoluzione di tutti gli identificatori.

REFRESH MATERIALIZED VIEW mai cambia la definizione dei dati, solo i dati:

Il manuale potrebbe essere più esplicito al riguardo, ma il confronto con il comportamento di CREATE TABLE AS me lo ha chiarito: