Aracılığıyla paylaş


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.

Konu bağlantısı simgesiTransact-SQL sözdizimi kuralları

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