Aracılığıyla paylaş


DROP TABLE (Transact-SQL)

Şunlar için geçerlidir:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalitik Platform Sistemi (PDW)Microsoft Fabric'te Depo

Bir veya daha fazla tablo tanımını ve bu tablolar için tüm veri, indeksleri, tetikleyicileri, kısıtlamaları ve izin spesifikasyonlarını kaldırır. Bırakılan tabloya referans veren herhangi bir görünüm veya saklanan prosedür, DROP VIEW veya DROP PROCEDURE kullanılarak açıkça bırakılmalıdır. Bir tablodaki bağımlılıkları bildirmek için sys.dm_sql_referencing_entities kullanın.

Transact-SQL söz dizimi kuralları

Sözdizimi

-- Syntax for SQL Server, Azure SQL Database, Warehouse in Microsoft Fabric

DROP TABLE [ IF EXISTS ] { database_name.schema_name.table_name | schema_name.table_name | table_name } [ ,...n ]
[ ; ]
-- Syntax for Azure Synapse Analytics and Parallel Data Warehouse

DROP TABLE { database_name.schema_name.table_name | schema_name.table_name | table_name }
[;]

Arguments

database_name

Tablonun oluşturulduğu veritabanının adıdır.

Azure SQL Veritabanı, mevcut veritabanı olduğunda veya database_nameobject_nametempdb olduğunda ve ile # başlarken üç bölümlü isim formatını database_name.schema_name.object_namedatabase_name destekler.## Azure SQL Database dört parçalı isimleri desteklemez.

VARSA İSE

Şunlar için geçerlidir: SQL Server ( geçerli sürüm aracılığıyla SQL Server 2016 (13.x).

Tablo koşullu olarak sadece zaten varsa düşürülür.

schema_name

Tablonun ait olduğu şemanın adıdır.

table_name

Tablonun adı kaldırılacak mı?

Açıklamalar

DROP TABLE Bir kısıtlama ile referans FOREIGN KEY verilen bir tabloyu düşürmek için kullanılamaz. Referans FOREIGN KEY kısıtlaması veya referans tablosu önce kaldırılmalıdır.

Aynı DROP TABLE ifadede birden fazla tablo bırakılabilir. Bir kısıtlamadaki referans tablosu FOREIGN KEY ve referans verilen birincil veya benzersiz anahtara sahip tablo aynı DROP TABLE ifadede düşürülüyorsa, referans tablosu önce listelenmelidir.

Tablo bırakıldığında, tablodaki kurallar veya varsayılanlar bağlamalarını kaybeder ve tabloyla ilişkili tüm kısıtlamalar veya tetikleyiciler otomatik olarak bırakılır. Tabloyu yeniden oluşturursanız, uygun kuralları ve varsayılanları yeniden bağlamanız, tetikleyicileri yeniden oluşturmanız ve tüm gerekli kısıtlamaları eklemeniz gerekir.

Bir tablodaki tüm satırları ifadeyi DELETE veya ifadeyi TRUNCATE TABLE kullanarak silerseniz, tablo tanımı bırakılana kadar DROP TABLEvar olur.

Eğer bu FILESTREAM öznitelikle bir varbinary(max) sütun içeren bir tablo düşürülürse, dosya sisteminde saklanan veriler kaldırılmaz.

Bir defter tablosu düşürüldüğünde, bağımlı nesneleri (geçmiş tablosu ve defter görünümü) de düşürülür. Bir tarih tablosu veya defter görünümü doğrudan bırakılamaz. Sistem, defter tabloları ve bağımlı nesneler bırakıldığında yumuşak silme anlamını zorunlu kılar – aslında kaldırılmazlar, sistem katalog görünümlerinde bırakılmış olarak işaretlenir ve yeniden adlandırılırlar. Daha fazla bilgi için Defterin değerlendirmeleri ve sınırlamaları sayfasına bakınız.

Önemli

DROP TABLE ve CREATE TABLE aynı masada, aynı partide yürütülmemeli. Aksi takdirde beklenmeyen bir hata oluşabilir.

Fabric SQL veritabanında, bir tablo düşürüldüğünde, hem veritabanından hem de Fabric OneLake'den düşürülür. Düşürülen tablo için tüm yansıtılmış veriler kaldırılır.

Ertelenmiş dağıtım

Bir tablo kaldırıldığında ve tablo veya indeksleri 128 veya daha fazla kapsama sahip olduğunda, Veritabanı Motoru gerçek sayfa açılış noktalarını ve ilgili kilitleri işlem tamamlandıktan sonra erteler. Tablo ve indeksler iki ayrı aşamada bırakılır: mantıksal ve fiziksel. Mantıksal aşamada, mevcut tahsis birimleri dağıtım için işaretlenir ve işlem gerçekleşene kadar kilitlenir. Fiziksel aşamada, bir arka plan işlemi dağıtım için işaretlenmiş sayfaları kaldırır. Bu da boşaltılan DROP TABLE alanın hemen yeni tahsisler için kullanılmayacağı anlamına gelir.

Hızlandırılmış veritabanı kurtarma etkinleştirildiğinde, kapsam sayısına bakılmaksızın ayrı mantıksal ve fiziksel aşamalar kullanılır.

Permissions

Tablonun ait olduğu şema üzerindeki izni, CONTROL tablo üzerindeki izni veya sabit db_ddladmin veritabanı rolündeki üyeliği gerektirirALTER.

Eğer ifade defter tablosunu düşürürse, ALTER LEDGER izin gereklidir.

Örnekler

A. Mevcut veritabanında bir tablo bırakmak

Aşağıdaki örnek, mevcut veritabanından tabloyu ProductVendor1 ve verilerini ve indekslerini kaldırmaktadır.

DROP TABLE ProductVendor1;

B. Başka bir veritabanına tablo bırakmak

Aşağıdaki örnek, tabloyu SalesPerson2 veritabanına bırakırAdventureWorks2025. Örnek, sunucu örneğindeki herhangi bir veritabanından çalıştırılabilir.

DROP TABLE AdventureWorks2022.dbo.SalesPerson2 ;

C. Geçici bir masa bırakmak

Aşağıdaki örnek geçici bir tablo oluşturur, varlığını test eder, bırakır ve bir SELECT ifadeyi çalıştırmaya çalışarak tekrar varlığını test eder, ancak bu durum başarısız olur. Bu örnek, IF EXISTS SQL Server 2016 (13.x) ile başlayan sözdizimi kullanılmaz.

CREATE TABLE #temptable (col1 int);

INSERT INTO #temptable
VALUES (10);

SELECT col1 FROM #temptable;

IF OBJECT_ID(N'tempdb..#temptable', N'U') IS NOT NULL
  DROP TABLE #temptable;

SELECT col1 FROM #temptable;

D. EĞER VAR OLURSA kullanarak bir tablo düşürmek

Şunlar için geçerlidir: SQL Server ( geçerli sürüm aracılığıyla SQL Server 2016 (13.x).

Aşağıdaki örnek, . T1adlı bir tablo oluşturur. Sonra ikinci ifade tabloyu düşürüyor. Üçüncü ibildirim işlem yapmaz çünkü tablo zaten kaldırılmıştır, ancak hata yapmaz.

CREATE TABLE T1 (Col1 int);

DROP TABLE T1;

DROP TABLE IF EXISTS T1;