İPUCU – T-SQL de Truncate ile Delete Komutu Arasındaki Farklar

T-SQL de sorgu yazarken bazı verileri silmek istediğimiz zaman hepimizin bildiği gibi Delete komutunu kullanırız. Tüm kayıtları silmek istediğimiz de ise hem Delete hem de Truncate komutlarını kullanabiliriz. Peki bu komutlar arasındaki farklar nelerdir? Temel farkları kısaca inceleyelim;

1. Delete komutunu kullanırken sorgumuza where şartını ekleyebiliriz. Truncate komutunda böyle bir imkân yoktur, tüm kayıtları siler.
delete1
2. En önemli fark olarak eğer tablomuzda identity kolonumuz varsa, Delete yaparsak o kolon kaçıncı identity de kalmışsa kaldığı yerden saymaya devam eder. Truncate Table yaptığımız zaman ise en baştan saymaya başlar.

3. Tablonun üzerinde Delete Trigger’ı varsa, Truncate Table yaptığımızda tetiklenmez. Delete komutu ile trigger tetiklenir.

4. Foreign Key içeren tablolarda Truncate Table yapılmaz. Delete komutu kullanılmalıdır.

5. Truncate komutunda loglama kayıt bazlı yapılmadığı için Delete komutuna göre daha performanslıdır.

Reklamlar