Yumuşak silme
Bir satırı kaldırmak yerine silinmiş olarak işaretlemek — genellikle bir deleted_at zaman damgasıyla. Size çöp kutusu, geri alma ve “bunu kim sildi?” sorusunu yanıtlama imkânı verir.
Bedeli sonraki her sorguda ödenir. Her SELECT’in WHERE deleted_at IS NULL koşulunu hatırlaması gerekir; unutan, raporunda hayaletlerle karşılaşır. Benzersiz dizinler beklendiği gibi davranmayı bırakır, çünkü silinmiş bir satır değerini işgal etmeyi sürdürür — PostgreSQL’deki çözüm kısmi benzersiz dizindir. Yabancı anahtarlar hâlâ “silinmiş” satırlara işaret eder ve tablo sonsuza dek büyür. Alternatifler çoğu zaman daha iyidir: satırı bir arşiv tablosuna taşımak ya da bir olay günlüğü kullanıp geçmişi orada tutmak. Ve GDPR’yi unutmayın: kullanıcı unutulmayı istediğinde yumuşak silme, hukuki anlamda silme sayılmaz.