Así es como lo hago. Tengo un is_deleted
campo que por defecto es 0. Luego, las consultas solo marcan WHERE is_deleted = 0
.
Trato de mantenerme alejado de cualquier borrado duro tanto como sea posible. A veces son necesarios, pero lo convierto en una función solo para administradores. De esa manera, podemos eliminar de forma permanente, pero los usuarios no pueden...
Editar: De hecho, podría usar esto para tener múltiples "capas" de eliminación temporal en su aplicación. Así que cada uno podría ser un código:
0
-> No eliminado1
-> Eliminado temporalmente, aparece en las listas de elementos eliminados para los usuarios de administración2
-> Eliminado temporalmente, no aparece para ningún usuario excepto para los usuarios administradores3
-> Solo aparece para desarrolladores.
Tener los otros 2 niveles aún permitirá a los gerentes y administradores limpiar las listas eliminadas si son demasiado largas. Y dado que el código de front-end solo busca is_deleted = 0
, es transparente para la interfaz...