The database schema had to change, and the deadline was already past due. You needed a new column.
Adding a new column should be simple. In practice, it can stall deploys, block features, and break production if done wrong. Schema changes touch code, data, and migrations in one move. If your tables hold millions of rows, the wrong approach can lock writes, spike CPU, and bring down critical services.
The first question is scope. Will the new column be nullable or have a default value? A nullable column is fast to add, but leaves data integrity to application logic. A default with NOT NULL ensures consistency but can create full table rewrites. On PostgreSQL, avoid large synchronous updates. Instead, add the column as nullable, backfill in small batches, then set NOT NULL when data is complete.
In MySQL, use ALGORITHM=INPLACE where possible. On large datasets, test in a staging environment with a clone of production size. Measure the time of the ALTER TABLE command before running it live. Smaller integer or text lengths reduce migration cost.