Soft delete
Att markera en rad som borttagen istället för att ta bort den — typiskt en deleted_at-tidsstämpel. Ger papperskorg, ångra och möjlighet att svara på "vem tog bort det här?".
Kostnaden betalas i varje efterföljande fråga. Varje SELECT måste komma ihåg WHERE deleted_at IS NULL, och den som glömmer får spöken i rapporten. Unika index slutar fungera som förväntat eftersom en raderad rad fortfarande upptar sitt värde — lösningen i PostgreSQL är ett partiellt unikt index. Främmande nycklar pekar fortfarande på "borttagna" rader, och tabellen växer för alltid. Alternativen är ofta bättre: flytta raden till en arkivtabell, eller använd händelselogg och behåll historiken där. Och glöm inte GDPR: en soft delete är ingen radering i lagens mening när användaren begär att bli glömd.