PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

A atualização de uma visualização materializada não inclui a coluna adicionada


SELECT * é expandido em tempo de execução, assim como em todas as operações semelhantes (CREATE VIEW , CREATE TABLE AS )

A palavra-chave é "ligação antecipada" em oposição a "ligação tardia". Postgres salva a lista de colunas presentes em tempo de execução de SELECT * , as colunas adicionadas posteriormente não incluído automaticamente. A sequência de consulta em si não é salvo, apenas a representação interna depois expandindo SELECT * e outras coisas como resolver todos os identificadores.

REFRESH MATERIALIZED VIEW nunca altera a definição de dados, apenas dados:

O manual poderia ser mais explícito sobre isso, mas a comparação com o comportamento de CREATE TABLE AS deixou claro para mim: