Adding a new column in a production database sounds simple. It isn’t. Schema changes can break queries, cause downtime, and cascade into failed deployments. The risk grows with scale, concurrency, and dependencies.
A new column changes the contract between your application and its data. Even if you set defaults or allow nulls, bad indexing or wrong data types will hurt performance. A single ALTER TABLE on a large table can lock writes and trigger replication lag. Without a plan, you could stall an entire system on a single statement.
Best practice starts with defining the column: choose the smallest viable data type, align it to existing indexing strategy, and document purpose and constraints. For timestamp or numeric fields, enforce precision up front. Use check constraints to preserve invariants rather than relying on application logic alone.