Soft Deletes: la función que cuesta más de lo que ahorra

Los soft deletes parecen simples: agregas una columna deleted_at, la filtras en cada consulta y lo despliegas. Aparecen en todos los tutoriales de ORM, en todos los boilerplates de SaaS, en toda guía de "cómo construir una aplicación multi-tenant". Se sienten como un seguro gratuito. En la práctica, son un desastre de esquema en cámara lenta que corrompe índices, rompe restricciones y genera fugas de datos invisibles que se acumulan durante años.

El atractivo es real: los hard deletes dan miedo, y deleted_at te da un botón de deshacer. Pero hay una brecha importante entre lo que prometen los soft deletes y lo que realmente cuestan a gran escala.