The migration was done. The data looked clean. But the new column was missing.
A new column changes the shape of the table. It changes queries, indexes, joins, and performance. Adding one in production is simple only if you plan every step. Without that, you risk table locks, schema drift, and outages.
To define a new column, start with the schema. Use clear, exact column names. Set explicit data types. Define NULL or NOT NULL based on true data rules, not guesses. For time-based data, use TIMESTAMP WITH TIME ZONE. For monetary values, use fixed‑precision decimal types. Avoid generic types like TEXT unless there is no better fit.
When altering a live database, avoid blocking writes. In PostgreSQL, ALTER TABLE ADD COLUMN is fast for nullable columns with no default. Adding defaults or non-null constraints will rewrite the entire table, which can lock queries. Instead, add the column as nullable, backfill in controlled batches, then add constraints.