The schema is broken. You need a new column.
A missing field means lost data, failed queries, and subtle bugs that bleed into production. Adding a new column isn’t just a DDL change—it’s a shift in how your system stores truth. Done carelessly, it locks up tables, kills latency, and breaks downstream jobs. Done right, it’s invisible to users but powerful for developers.
Start with the exact definition. Name the column to match its purpose. Choose the right data type—strings for freeform, integers for counters, timestamps for events. Set defaults and constraints early. Nullability should be a deliberate decision, not habit. Each choice affects query performance, storage size, and future migrations.
Migrations must be safe. In high-traffic systems, adding a column can trigger table rewrites that block reads and writes. To avoid downtime, use online schema changes, versioned migrations, or database-specific tools like ALTER TABLE ... ADD COLUMN with non-blocking semantics. Test on staging with production-like load.