Adding a new column should be simple. In practice, it can break deploys, stall pipelines, and corrupt data if done carelessly. Schema changes are high‑risk in production. A single missing default or a mishandled null can halt an entire rollout.
When you add a new column to a relational database, you change the contract between your data and your application. This applies whether you’re working with PostgreSQL, MySQL, or another SQL engine. A new column means code must read it, write it, and often backfill old rows. Without a plan, you invite downtime.
Best practice is to isolate the change. Create the new column in one migration, without dropping or renaming anything. Use explicit defaults instead of implicit ones. For wide datasets, avoid locking large tables by adding columns in off‑peak hours or using ALTER TABLE ... ADD COLUMN with non‑blocking options, if the database supports them.