truncate table ve delete arasındaki fark nedir?
6 September 2007 – 16:43Bu kafa karıştıran bir mevzudur truncate ile delete arasındaki fark… Genel olarak bu farkları şöyle açıklamak mümkün:
1. truncate komutu transaction loguna dahil edilmeyen(non-logged) bir operasyon iken delete ile silinen tüm kayıtlar transaction loglarına yazılır.
2. truncate çok hızlı gerçekleşirken delete daha yavaş gerçekleşir.
ipucu: İçinde aşırı fazla veri olan bir tabloyu boşaltmak için truncate kullanmak mantıklı olabilir.
3. truncate ile veri silindiğinde tablo üzerinde tanımlı trigger’lar çalışmaz. Ama “delete” komutu verildiğinde tabloda delete triggerı varsa çalışır.
ipucu: trigger’ları devre dışı bırakıp silme için truncate uygun olur.
4. truncate işleminden sonra “transaction yedeği” alınamaz. O sebeple transaction yedeğine güvenerek çalışıyorsanız öncetam yedek (full backup) almak gerekmektedir.
5. truncate ile başarıyla silinen kayıtlara ulaşmak bir daha mümkün değilken, delete ile silinen verilere ulaşmanın en azından bazı yolları mevcuttur.