Adding a new column is simple in theory, dangerous in practice. Schema changes carry risk. They touch live traffic, cached results, ETL jobs, and downstream consumers you forgot existed. The right process keeps the change predictable. The wrong one brings outages.
Plan the change before touching the database. Decide on the column name, type, nullability, default, and indexing requirements. Avoid defaults that write to every row; they can lock the table and block reads. For large datasets, add the column without a default, then backfill in batches.
In relational databases like PostgreSQL or MySQL, use ALTER TABLE ... ADD COLUMN ... with care. Test on staging with production-like load. Confirm that your ORM migrations generate the expected SQL. Watch schema migration logs for locking behavior.
Coordinate application code with the schema update. Deploy code that can tolerate both the presence and absence of the new column. In zero-downtime systems, add the column first, deploy new code second, and remove old code paths last.