The fix was obvious: create a new column.
Adding a new column in a live database sounds simple. It isn’t. The operation touches schema design, migration speed, locking behavior, and data integrity. A poorly planned schema change can block writes, spike CPU, and cascade failure across services. That’s why every new column request deserves a repeatable, tested workflow.
First rule: define the exact purpose. Avoid generic names like data or info. Use clear, scoped names. Second: decide on type and constraints up front. Changing a column type after production load is error-prone. Third: set defaults carefully. Null defaults can prevent costly rewrites; computed defaults can remove manual data backfill steps.
For SQL databases, use migration tools that wrap ALTER TABLE in safe operations. For example, PostgreSQL ADD COLUMN without a default is fast, but adding a default with NOT NULL rewrites the table. Break that into steps: add the column as nullable, backfill in batches, then enforce NOT NULL.