vee’s notes

this is about everything

DELETE vs TRUNCATE April 23, 2009

Filed under: oracle — veeolina @ 5:35 pm
Tags: , ,

DELETE sama TRUNCATE apa bedanya sih? Perasaan fungsinya sama, hapus-hapus juga..

Eits..tunggu dulu..tnyata klo salah pilih, akibatnya bisa fatal lho..

Kok bisa gitu??

Command DELETE bisa dipakai untuk menghapus semua row yg ada dalam suatu tabel. Jika pada command DELETE ditambahkan clause WHERE maka yang dihapus hanya row tertentu saja yang memenuhi kondisi WHERE tersebut. Sedangkan command TRUNCATE digunakan untuk menghapus semua row yang ada pada suatu tabel. Command ini tidak bisa diikuti oleh clause WHERE.

DELETE adalah DML (Data Manipulation Language) command. Jadi setiap operasi DELETE selesai dilakukan, command COMMIT harus dipanggil untuk membuat perubahan menjadi permanen. Selain itu setelah operasi DELETE, operasi ROLLBACK juga dapat dilakukan. Untuk dapat ROLLBACK maka semua data yang dihapus harus di-copy terlebih dahulu ke tablesapce  UNDO/ROLLBACK. Hal inilah yang menyebabkan operasi DELETE lebih lambat daripada operasi TRUNCATE. Pada operasi TRUNCATE semua data langsung dihapus dari storage tanpa harus di-copy terlebih dahulu. TRUNCATE adalah DDL (Data Defenition Language) command yang tidak bisa di undo (ROLLBACK). Sebagai DDL command, TRUNCATE tidak bisa memanggil TRIGGER sedangkan DELETE dapat memanggil TRIGGER yang berhubungan dengan tabel yang dihapus.

Jadi pastikan untuk memilih command yang tepat ya..biar ga kehilangan data, operasi yang dijalankan benar, ga lemot, dan hasilnya sesuai dg yang diinginkan 🙂