Soft Delete
A soft delete marks a row as deleted (e.g. with a deleted_at timestamp) instead of removing it, so data can be recovered, audited, or filtered out.
Instead of a destructive DELETE, a soft delete sets a flag or timestamp. Application queries then exclude 'deleted' rows, while the data remains for recovery and history.
It's useful for undo, audit trails, and compliance, but it adds complexity: every query must filter deleted rows, and unique constraints and storage must account for them.
Row-level security and views can help enforce that 'deleted' rows stay hidden from normal access while remaining available to admins.
Related terms
See it in practice
Kolaybase gives you PostgreSQL, auth, storage, and a REST API in minutes.