TRUNCATE TABLE, SQL Server’da bir tablodaki tüm verileri hızlı ve etkili bir şekilde silmek için kullanılan bir DDL (Data Definition Language) komutudur. DELETE komutuna göre daha performanslıdır, ancak bazı önemli farklılıkları vardır.
Temel Komut:
TRUNCATE TABLE [database_name.[schema_name].[table_name]
Truncate komutu delete komutuna göre bazı avantajları bulunmaktadır. Truncate komutu delete komutuna göre hızlıdır. Delete komutunda silinen her ifade loglanırken Truncate komutunda daha az veya hiç loglanmaz. Where koşulu kullanamayız. Delete komutunda identity değeri sıfırlanmazken Truncate komutunda identity ifadesi sıfırlanır. DELETE bir DML komutuyken TRUNCATE DDL’dir
TRUNCATE TABLE geri dönüşü olmayan bir işlem olabileceğinden. Önce mutlaka yedek alınması gerekir. Çalıştırmadan önce tablo adını iki kez kontrol edilmesi gerekmektedir.
Aşağıdaki resimdeki gibi delete komutunda tablomuzdaki resimleri sildikten sonra yeni bir değer ekleyeceğimiz zaman identity komutu tablo silindikten sonra yeni veri eklendiğinde kaldığı yerden devam etmektedir. Resimde dikkat edilirse 6 ifadesinin set edildiğini görmüş oluyoruz.
Delete from [dbo].[Musteriler]

Truncate ifadesinin kullanıldıktan sonra yeni değer insert edildiğinde dönen sonuçları görmüş olalım.
Truncate table [dbo].[Musteriler]

TRUNCATE TABLE, tabloya referans veren foreign key varsa çalışmaz. Foreign key varsa hata verir. TRUNCATE TABLE AnaTablo; — Msg 4712, Level 16, State 1, Line 1 — Cannot truncate table ‘AnaTablo’ because it is being referenced by a FOREIGN KEY constraint.
TRUNCATE TABLE çalıştırmak için ALTER izni gerekir. Rollback olunca ilgili tablo veriler silinmemektedir.
Belirli partition bölümlerini truncate etmek için aşağıdaki komut kullanılmaktadır.
TRUNCATE TABLE BuyukTablo WITH (PARTITIONS (1, 3, 5));
TRUNCATE TABLE, test ortamlarında veya geçici tablolarda sıkça kullanılan, ancak production veritabanlarında çok dikkatli kullanılması gereken güçlü bir komuttur.
Başka makalede görüşmek dileğiyle..
“İman edip de iyi davranışlarda bulunanlara gelince, onlar için çok merhametli olan Allah, (gönüllerde) bir sevgi yaratacaktır.” Meryem Suresi; 96. Ayet