É assim que eu faço. Eu tenho um
is_deleted
campo cujo padrão é 0. Em seguida, as consultas apenas verificam WHERE is_deleted = 0
. Eu tento ficar longe de qualquer hard-delete o máximo possível. Eles são necessários às vezes, mas faço disso um recurso apenas para administradores. Dessa forma, podemos excluir, mas os usuários não podem ...
Editar: Na verdade, você pode usar isso para ter várias "camadas" de exclusão suave em seu aplicativo. Então cada um pode ser um código:
0
-> Não excluído1
-> Soft Deleted, aparece em listas de itens excluídos para usuários de gerenciamento2
-> Soft Deleted, não aparece para nenhum usuário, exceto usuários admin3
-> Aparece apenas para desenvolvedores.
Ter os outros 2 níveis ainda permitirá que gerentes e administradores limpem as listas excluídas se ficarem muito longas. E como o código front-end apenas verifica
is_deleted = 0
, é transparente para o frontend...