Adding a new column is one of the most common schema changes, but it’s also one of the most dangerous if done without care. Even simple changes risk breaking dependencies, triggering downtime, or locking large tables. The key is to treat every new column as a targeted migration, not an afterthought.
First, define the column’s purpose and type. Avoid vague names and generic data types. A misnamed field invites misuse. Choosing the wrong type forces costly rewrites later. Document the column in your schema history to keep changes visible and traceable.
Second, plan for backward compatibility. If the new column will be nullable, decide if the default value should be set inline or through a background migration to avoid performance hits. For large datasets, adding a non-null column with a default can cause a table rewrite that locks the table for minutes or hours.