Adding a new column to a production database is never just a schema change. It affects queries, indexes, migrations, and code paths that depend on the old structure. One missed detail can cause outages, slow queries, or broken reports.
The essential steps start before the column is created. Define the purpose. Decide on the data type. Set constraints—NOT NULL, DEFAULT, or unique keys—based on how the column will be used. If the column will hold large text or unbounded JSON, analyze storage impact and performance implications.
Plan migrations so they don’t lock the table for too long. In PostgreSQL, adding a column with a DEFAULT on a large table can be expensive, so consider null defaults followed by an update in batches. For MySQL, watch for replication lag when large updates go through.