7 Şubat 2012 Salı

SQL'de Truncate ile Delete arasındaki farklar

Evet, ikiside tabloları silmek için kullanılan komutlar ama ne farkları var?
TRUNCATE TABLE ya da DELETE FROM
1- İlk farklılık truncate ile silme işlemi yaparsanız, veritabanı seviyesinde her silme işleminden sonra LOG tablosunda tutulan loglamayı dar kapsamlı tuttuğu için geri dönüşü olmaz ve bu özelliği ile daha hızlı çalışır.
2- Truncate komutu ile where koşulu kullanılamaz, rollback yapılamaz.
3- Truncate alter yetkisine, delete ise delete yetkisine ihtiyaç duyar.
4- Bu bence en önemli nokta; kullandığınız anahtar alanınızı, otomatik artmaya ayarladığınızda(identity tipindeki kolon) delete ile silme işleminiz sonrası son değerinden devam eder, yani 120 de kaldıysa yeni attığınız kayıt boş tabloya 121 ile atılmaya başlar. Truncate ise tekrar 1'e dönmesini sağlar.

Bu arada başka tablolar truncate etmek istediğiniz tabloya (ForeignKey) bağlılığı varsa truncate kodunu çalıştıramazsınız, ama derseniz ki truncate etmeden identity alanını sıfırlamak istiyorum, onun yöntemi

DBCC CHECKIDENT('TABLONUZUNADI', RESEED, 0)

Umarım bu özet bilgilerin yararı olur ;)

Hiç yorum yok:

Yorum Gönder