Adding a new column seems trivial. In practice, it touches every layer: schema, queries, indexes, application logic, and deployments. A careless change can cause downtime, data loss, or silent corruption.
The first step is to define the new column in your schema migration. Use explicit types and defaults. Avoid NULL unless you have a clear reason. If existing rows need a value, backfill in a separate step. Large tables require staged migrations to avoid locking and blocking writes.
Once the schema is in place, audit all queries. SELECT * can hide defects by pulling columns the app does not expect. Add the new column to explicit query lists. Update INSERT, UPDATE, and bulk operations to write proper values from the first transaction.
Review indexes. If the new column will be queried or used in JOIN conditions, add the right index early. Avoid over-indexing, which slows writes and bloats storage.