Colonnes generees virtuelles
PostgreSQL 🟡 MidDéfinition
Depuis PostgreSQL 18 (25 septembre 2025), les colonnes générées (GENERATED ALWAYS AS) sont virtuelles par défaut : leur valeur est recalculee a la lecture plutôt que stockée sur disque a l'écriture. Le mot-clé STORED reste disponible pour retrouver l'ancien comportement quand le stockage physique est préféré.
Analogie
Comme un total de facture recalcule a chaque affichage plutôt qu'imprime et fige des la création du document.
Exemple de code
ALTER TABLE orders
ADD COLUMN total_ttc numeric
GENERATED ALWAYS AS (total_ht * 1.20) VIRTUAL;
-- Pour retrouver l'ancien comportement (stocke sur disque) :
-- GENERATED ALWAYS AS (total_ht * 1.20) STORED
Cas d'usage
Exposer un champ calcule (TTC, slug, total) sans payer le coût d'écriture ni le stockage disque a chaque insertion.
Anti-pattern
Migrer vers PG18 sans vérifier si du code s'appuyait implicitement sur le stockage physique des colonnes générées (par exemple un index dessus).
Termes liés
Fiche mise à jour le 2026-09-27