PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

L'actualisation d'une vue matérialisée n'inclut pas la colonne ajoutée

SELECT * est développé au moment de l'exécution, comme pour toutes les opérations similaires (CREATE VIEW , CREATE TABLE AS )

Le mot clé est « consolidation anticipée » par opposition à « consolidation tardive ». Postgres enregistre la liste des colonnes présentes au moment de l'exécution de SELECT * , les colonnes ajoutées ultérieurement ne le sont pas inclus automatiquement. La chaîne de requête elle-même n'est pas enregistrée, seule la représentation interne après développer SELECT * et d'autres choses comme la résolution de tous les identifiants.

REFRESH MATERIALIZED VIEW jamais modifie la définition des données, uniquement les données :

Le manuel pourrait être plus explicite à ce sujet, mais la comparaison avec le comportement de CREATE TABLE AS m'a fait comprendre :