Adding a new column sounds simple. It rarely is in production systems. Schema changes touch live data, application code, queries, indexes, and ETL pipelines. One mismatched type or default can cause downtime, data loss, or broken APIs.
A new column in SQL requires more than ALTER TABLE. You need to understand how the database engine locks rows, how replication handles the change, and how client applications read from the updated schema. On large tables, adding a column with a default value can rewrite the entire table, blocking writes for minutes or hours. In distributed databases, schema changes must be coordinated across nodes to avoid inconsistent reads.
Best practice for adding a new column is to stage the change. First, add the column as nullable and without a default. Deploy application code that writes to and reads from the column only if it exists. Backfill the data in small batches to reduce load. Only after the backfill should you enforce constraints, set defaults, or create indexes. This pattern reduces risk and avoids long locks.