It sounds simple. But introducing a new column to a live database is where things often break. Data integrity, performance, and schema evolution collide in ways that punish the careless. A safe migration isn’t just about writing ALTER TABLE; it’s about planning the change in a way that will not lock the database for seconds that feel like hours.
When adding a new column, decide first if it should have a default value or allow NULL. Adding a column with a non-null default can rewrite the whole table, creating downtime. To avoid it, create the column allowing NULL, backfill the data in small batches, then update constraints in a separate step.
Indexing is another risk point. Creating an index right after adding the column may cause locks that degrade performance. In high-traffic systems, use techniques like concurrent index creation (in Postgres) or filtered indexes to minimize impact.