Cookbook recipe

Add a NOT NULL column to a huge table safely

Applies to PostgreSQL 13–17 Last reviewed May 2026 Grounded in source
Estimated investigation4 min

Scenario

Adding a NOT NULL column with a default used to rewrite the whole table under a long lock. Do it in safe steps. Diagnose it On modern PostgreSQL, a constant default is metadata-only: ALTER TABLE big…

Investigation Path

Adding a NOT NULL column with a default used to rewrite the whole table under a long lock. Do it in safe steps.

Diagnose it

On modern PostgreSQL, a constant default is metadata-only:

ALTER TABLE big ADD COLUMN flag boolean NOT NULL DEFAULT false;
-- instant on PG 11+ for a constant default

Why it happens

Pre-11, adding a column with a default rewrote every row. Modern versions store a constant default in catalog metadata, but a volatile default (e.g. now()) or backfilling existing rows still requires work.

This is a Pro lesson

Get every Learning Pathway and cookbook recipe — grounded in PostgreSQL source code, with diagnostics, fixes, and prevention for each topic.

Continue this lesson to learn:

  • How to fix it
  • Prevent it next time
  • Related & next steps
  • All 36 Learning Pathway lessons
  • 170+ cookbook recipes
  • Source-grounded diagnostics & fixes

Secure checkout Cancel anytime Source-grounded

Career Impact

This scenario builds production judgment and operational confidence under pressure.

Open Career Dashboard →

Keep going

Related & next steps

Was this helpful?

← All cookbook recipes