Adding a new column should be simple. In many systems, it’s not. Schema migrations block writes. Locks pile up. Queries stall. Users wait. In production, that’s unacceptable. The right process makes a new column fast, safe, and reversible.
First, define the column in your schema migration. Use a nullable default when possible to avoid table rewrites. For large tables, avoid DEFAULT values that force an immediate backfill. Create the column empty, then populate it in small batches. This sidesteps long locks and protects uptime.
Second, ensure your application can handle both old and new schema states. Deploy code that ignores the missing column before the column exists, then deploy code that uses it only after it’s present. This decouples application changes from database changes and removes downtime risk.