Colonnes generees virtuelles

PostgreSQL 🟡 Mid

Dé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

#sgbd#interview#database#postgresql#pg18

Fiche mise à jour le 2026-09-27

← → au clavier pour passer d'une fiche à l'autre