sql >> Base de Datos >  >> RDS >> PostgreSQL

La actualización de una vista materializada no incluye la columna añadida

SELECT * se expande en el momento de la ejecución, al igual que con todas las operaciones similares (CREATE VIEW , CREATE TABLE AS )

La palabra clave es "enlace temprano" en oposición a "enlace tardío". Postgres guarda la lista de columnas presentes en el momento de la ejecución de SELECT * , las columnas añadidas más tarde no incluido automáticamente. La cadena de consulta en sí no se guarda, solo la representación interna después expandiendo SELECT * y otras cosas como resolver todos los identificadores.

REFRESH MATERIALIZED VIEW nunca cambia la definición de datos, solo datos:

El manual podría ser más explícito al respecto, pero la comparación con el comportamiento de CREATE TABLE AS me lo dejó claro: