C'est comme ça que je fais. J'ai un is_deleted
champ qui par défaut est 0. Ensuite, les requêtes vérifient simplement WHERE is_deleted = 0
.
J'essaie de rester à l'écart de toute suppression définitive autant que possible. Ils sont parfois nécessaires, mais j'en fais une fonctionnalité réservée aux administrateurs. De cette façon, nous pouvons supprimer définitivement, mais les utilisateurs ne peuvent pas...
Modifier : En fait, vous pouvez l'utiliser pour avoir plusieurs "couches" de suppression réversible dans votre application. Ainsi, chacun pourrait être un code :
0
-> Non supprimé1
-> Soft Deleted, apparaît dans les listes d'éléments supprimés pour les utilisateurs de gestion2
-> Soft Deleted, ne s'affiche pour aucun utilisateur à l'exception des utilisateurs admin3
-> Ne s'affiche que pour les développeurs.
Avoir les 2 autres niveaux permettra toujours aux gestionnaires et aux administrateurs de nettoyer les listes supprimées si elles deviennent trop longues. Et puisque le code frontal vérifie simplement is_deleted = 0
, c'est transparent pour le frontend...