TRUNCATE TABLE (Transact-SQL)
Tüm satırları tek tek satır silme günlüğü oluşturmadan bir tablo kaldırır.truncate table hiçbir where yan tümcedelete deyim benzer; Ancak, truncate table daha hızlı ve daha az sistem ve işlem günlüğü kaynak kullanır.
Sözdizimi
TRUNCATE TABLE
[ { database_name .[ schema_name ] . | schema_name . } ]
table_name
[ ; ]
Bağımsız değişkenler
database_name
Veritabanının adıdır.schema_name
tablo ait olduğu şema addır.table_name
Yuvarlamak tablo veya olduğu tüm satırları kaldırıldı addır.
Açıklamalar
truncate table, delete deyimkarşılaştırıldığında, aşağıdaki avantajları vardır:
Daha az hareket günlük alanı kullanılır.
delete deyim satırların bir saat kaldırır ve Silinen her satır için hareket günlüğüne bir girdi kaydeder.truncate table tablo verileri ve kayıtları yalnızca sayfa deallocations hareket günlüğüne depolamak için kullanılan veri sayfalarının ayırmayı kaldırma verileri kaldırır.
Daha az kilitleri kullanılır.
delete deyim yürütüldüğünde bir satır kilitkullanarak, tablo içindeki her satırı silmek için kilitli.truncate table tablo ve sayfa ancak değil her satırı her zaman kilitler.
Özel durum olmadan sıfır sayfaları tablokalır.
delete deyim yürütüldükten sonra tablo hala boş sayfaları içerebilir.Örneğin, bir yığın boş sayfaları en az (lck_m_x) tablo kilitbırakılmasına olamaz.Silme işlemi tablo kilitkullanmıyorsa, tablo (yığın) birçok boş sayfaları içerir.Bu sayfaları hızla bir arka plan temizleme işlemiyle ayırmanın kaldırılmasından rağmen dizinler için arkasında, boş sayfaları silme işlemi bırakabilirsiniz.
truncate table tablo, ancak tablo yapısını ve sütunlarını tüm satırları kaldırır, kısıtlamalar, dizinler ve benzeri kalır.tablo tanımı verilerinin yanında kaldırmak için drop table deyimkullanın.
tablo kimlik sütuniçeriyorsa, sayaç o sütun için sütuniçin tanımlanan tohum değerine sıfırlanır.Hiçbir tohum tanımlanmışsa, 1 varsayılan değeri kullanılır.Kimlik sayaç korumak için delete kullanın.
Kısıtlamalar
truncate table kullanamazsınız on tabloların:
FOREIGN key kısıtlaması tarafından başvurulan.(Kendisine başvuran bir yabancı anahtar olan bir tablo kırpabilirsiniz.)
Bir ' % s'görünümü dizinli görünümiçinde yer.
İşlem çoğaltma veya birleştirme çoğaltmasıkullanılarak yayımlanır.
Bir veya daha bu özelliklere sahip tablolar için delete deyim kullanın.
Tek tek satır silme işlemi oturum değil çünkü truncate table tetikleyici etkinleştiremezsiniz.Daha fazla bilgi için, bkz. CREATE TRIGGER (Transact-SQL).
Büyük tablolar kesiliyor
Microsoft SQL Server128 kapsamlarını uzantılarına bağlı eşzamanlı kilitleri tutmadan truncate tablonuz için açılan gereken veya bırakma olanağı vardır.Daha fazla bilgi için, bkz. Bırakarak ve büyük nesneler yeniden oluşturuluyor.
İzinler
Gerekli en az izni alter bulunduğu table_name.truncate table izinleri varsayılan tablo sahibi, üyeleri sysadmin sabit sunucu rolüve db_owner ve db_ddladmin sabit veritabanı rolleri ve transfer edilebilir değil misiniz.Ancak, truncate table deyim saklı yordamgibi bir modül içinde birleştirmek ve modül execute as kullanarak uygun izinleri yan tümce.Daha fazla bilgi için, bkz. execute as özel izin kümeleri oluşturmak için kullanma.
Örnekler
Aşağıdaki örnek, tüm verileri kaldırır JobCandidate tablo.SELECTifadeleri önce ve sonra gelen sonuçlarkarşılaştırmak içinTRUNCATE TABLEdeyim .
USE AdventureWorks2008R2;
GO
SELECT COUNT(*) AS BeforeTruncateCount
FROM HumanResources.JobCandidate;
GO
TRUNCATE TABLE HumanResources.JobCandidate;
GO
SELECT COUNT(*) AS AfterTruncateCount
FROM HumanResources.JobCandidate;
GO