Back to blog
Backend

Soft Delete vs Hard Delete di Database: Jangan Asal Hapus Data!

Hacker tidak selalu datang dari luar. Kadang, pengguna sendiri yang tidak sengaja menghapus data penting mereka. Ini cara aman menanganinya.

super admin·17 Juni 2026·2 min read
Soft Delete vs Hard Delete di Database: Jangan Asal Hapus Data!
Article Content

Tombol 'Hapus' Adalah Jebakan Mematikan

Sebagai Backend Developer, kamu diberi tugas membuat API untuk "Menghapus Artikel". Secara insting, kamu pasti akan menulis *query* database seperti ini: DELETE FROM articles WHERE id = 5. Baris data tersebut musnah dari Hard Disk server selamanya. Praktik ini disebut Hard Delete.

Apa bahayanya? Bagaimana jika 5 menit kemudian *user* menelepon *Customer Service* sambil menangis karena ia salah pencet tombol dan meminta artikelnya dikembalikan? Kamu tidak bisa menolongnya. Inilah mengapa dunia Enterprise sangat membenci Hard Delete.

Sihir Bernama Soft Delete (Hapus Pura-Pura)

Soft Delete adalah konsep di mana kita "berpura-pura" menghapus data, padahal data aslinya masih diam dengan aman di dalam database.

Cara Kerjanya Sangat Sederhana:

  1. Kamu menambahkan satu kolom khusus di tabelmu, misalnya bernama deleted_at (bertipe *Timestamp/DateTime*), atau is_deleted (bertipe *Boolean* True/False).
  2. Saat user menekan tombol Hapus, API-mu TIDAK menjalankan perintah DELETE. Sebaliknya, API-mu menjalankan perintah UPDATE untuk mengisi kolom deleted_at dengan tanggal hari ini.

Penyesuaian di API 'Get Data' (Read)

Karena datanya sebenarnya belum terhapus, kamu harus sedikit memodifikasi fungsi "Ambil Semua Artikel" (GET Request) milikmu agar artikel yang sudah ditandai 'terhapus' tidak ikut terkirim ke pengunjung.

  • Query Biasa: SELECT * FROM articles
  • Query Mode Soft Delete: SELECT * FROM articles WHERE deleted_at IS NULL

Dengan query ini, Frontend hanya akan menerima artikel yang sehat. Artikel yang sudah "dihapus" akan menjadi hantu di *database*.

Keuntungan Luar Biasa Soft Delete

  • Tombol Undo (Urungkan): Kamu bisa dengan mudah membuat fitur "Kembalikan Data" (Restore) hanya dengan mengubah nilai deleted_at kembali menjadi NULL.
  • Audit dan Hukum: Jika terjadi masalah hukum (misal: penipuan transaksi), polisi siber bisa melacak data pelaku di database meskipun sang pelaku sudah menekan tombol hapus akun di aplikasinya.
  • Analisis Data (Data Science): Data historis sangat berharga bagi perusahaan untuk melihat tren pengguna yang sering berhenti berlangganan (Churn Rate).

Kapan Boleh Memakai Hard Delete?

Lakukan *Hard Delete* (Hapus permanen) HANYA pada tabel-tabel sampah/sementara, seperti Tabel OTP Reset Password yang sudah Expired, atau Tabel Log Error yang sudah berusia lebih dari 1 tahun agar tidak memenuhi kapasitas (Storage) Server.

Mau langsung pakai template?

Jelajahi template gratis dan premium di TampilKit untuk mempercepat proses development project kamu.

Browse Templates