13.6 Soft Deletes: deleted_at Columns vs Archival Tables
Right, let’s talk about the great “delete-but-not-really” debate. You’re not a monster; you don’t want to permanently nuke user data. Maybe it’s for legal compliance (GDPR, CCPA), maybe it’s for audit trails, or maybe you’ve just learned the hard way that users have a hilarious tendency to beg for their data back six months after angrily telling you to delete everything. So we implement soft deletes. But how? There are two main camps, and they’re at war in the corridors of every engineering department.