Modelleme ve veri değişimi
DELETE, TRUNCATE ve DROP
Satır, bütün içerik ve nesne farklı seviyelerdir.
Kavramı anlayalım
DELETE WHERE ile seçili satırları kaldırabilir. TRUNCATE TABLE tablonun bütün satırlarını kaldırır, WHERE kabul etmez ve identity sayacını sıfırlar. DROP TABLE nesnenin kendisini kaldırır. Bunlar eş anlamlı komutlar değildir.
SQL Server’da TRUNCATE “hiç log yazmayan” bir işlem değildir; sayfa deallocation işlemleri loglanır ve uygun transaction içinde geri alınabilir. Foreign key, temporal tablo ve diğer özellikler kullanımını sınırlayabilir. Bu ders yalnız geçici tablolarla örnek verir; üretim verisi silme planı yetki, bağımlılık ve yedek stratejisi gerektirir.
Temizlik ve nesne yaşam döngüsünde doğru komutu seçmek için.
TRUNCATE’in geri alınamaz veya tamamen logsuz olduğunu sanmak.
Aynı konu. Üç farklı derinlik.
CREATE TABLE #DeleteDemo (Id int); INSERT INTO #DeleteDemo VALUES (1),(2); DELETE FROM #DeleteDemo WHERE Id = 1; SELECT * FROM #DeleteDemo;Yalnız 2 numaralı geçici kayıt kalır.
Bu sayfa SQL çalıştırmaz. Örnekleri indirilebilir SqlStudioLab veritabanında, SSMS’de uygula. Geçici tablo örneklerini yeniden çalıştırırken yalnız ilgili #tabloyu temizle. VIEW, procedure ve function örnekleri lab’da kalıcı nesne oluşturur; üretim bağlantısı kullanma.
Önce kendin dene.
Geçici tabloda seçili silme ile tüm satırları silme farkını dene.
Çözümü ve açıklamasını göster
CREATE TABLE #CleanDemo (Id int); INSERT INTO #CleanDemo VALUES (1),(2),(3); DELETE FROM #CleanDemo WHERE Id = 2; SELECT COUNT(*) AS Remaining FROM #CleanDemo;İki satır kalır; nesne hâlâ vardır.