DROP TABLE (Transact-SQL)

 

**DIESES THEMA GILT FÜR:** ![](../Image/Applies%20to/yes.png)SQL Server \(ab 2008\) ![](../Image/Applies%20to/yes.png)Azure SQL\-Datenbank ![](../Image/Applies%20to/yes.png)Azure SQL Data Warehouse ![](../Image/Applies%20to/yes.png)Parallel Data Warehouse

Entfernt eine oder mehrere Tabellendefinitionen sowie alle Daten, Indizes, Trigger, Einschränkungen und Berechtigungen für diese Tabellen. Jede Sicht oder gespeicherte Prozedur, die auf die gelöschte Tabelle verweist, muss explizit mithilfe einer DROP VIEW- oder DROP PROCEDURE-Anweisung gelöscht werden. Um die Abhängigkeiten über eine Tabelle zu berichten, verwenden Sie sys.dm_sql_referencing_entities.

Gilt für: SQL Server (SQL Server 2008 bis aktuelle Version), Azure SQL-Datenbank.

Topic link icon Transact-SQL-Syntaxkonventionen

  
DROP TABLE [ database_name . [ schema_name ] . | schema_name . ]  
table_name [ ,...n ]  
 [ ; ]  

database_name
Name der Datenbank, in der die Tabelle erstellt wurde.

Die Windows Azure SQL-Datenbank unterstützt das aus drei Teilen bestehende Format database_name.[schema_name].object_name, wenn database_name die aktuelle Datenbank bzw. database_name tempdb ist und object_name mit # beginnt. Die Windows Azure SQL-Datenbank unterstützt keine vierteiligen Namen.

schema_name
Der Name des Schemas, zu dem die Tabelle gehört.

table_name
Name der Tabelle, die entfernt werden soll

Die DROP TABLE-Anweisung kann nicht zum Löschen einer Tabelle verwendet werden, auf die mit einer FOREIGN KEY-Einschränkung verwiesen wird. Die verweisende FOREIGN KEY-Einschränkung oder die verweisende Tabelle muss zuerst gelöscht werden. Wenn sowohl die verweisende Tabelle als auch die Tabelle mit dem Primärschlüssel in derselben DROP TABLE-Anweisung gelöscht werden, muss die verweisende Tabelle zuerst aufgelistet werden.

Mehrere Tabellen können in jeder beliebigen Datenbank gelöscht werden. Verweist eine zu löschende Tabelle auf den Primärschlüssel einer anderen, ebenfalls zu löschenden Tabelle, muss die verweisende Tabelle mit dem Fremdschlüssel vor der Tabelle mit dem Primärschlüssel, auf den verwiesen wird, aufgelistet werden.

Wird eine Tabelle gelöscht, werden alle Bindungen von Regeln und Standardwerten zur Tabelle entfernt, und alle der Tabelle zugeordneten Einschränkungen und Trigger werden automatisch gelöscht. Wenn Sie die Tabelle neu erstellen, müssen Sie auch die entsprechenden Regeln und Standardwerte neu binden, die Trigger neu erstellen und alle erforderlichen Einschränkungen hinzufügen.

Wenn Sie alle Zeilen einer Tabelle löschen (DELETE tablename) oder die TRUNCATE TABLE-Anweisung verwenden, ist die Tabelle so lange vorhanden, bis sie gelöscht wird.

Umfangreiche Tabellen und Indizes mit mehr als 128 Blöcken werden in zwei getrennten Phasen gelöscht: ‎in der logischen und in der physischen Phase. In der logischen Phase werden die von der Tabelle verwendeten vorhandenen Zuordnungseinheiten für die Aufhebung der Zuordnungen markiert und bis zum Commit der Transaktion gesperrt. In der physischen Phase werden die für die Zuordnungsaufhebung markierten IAM-Seiten in Batches physisch gelöscht.

Wenn Sie eine Tabelle löschen, die eine VARBINARY(MAX)-Spalte mit dem FILESTREAM-Attribut enthält, werden alle im Dateisystem gespeicherten Daten nicht entfernt.

System_CAPS_ICON_important.jpg Wichtig


DROP TABLE und CREATE TABLE dürfen nicht in der gleichen Tabelle im gleichen Batch ausgeführt werden. Andernfalls tritt möglicherweise ein unerwarteter Fehler auf.

Erfordert die ALTER-Berechtigung für das Schema, zu dem die Tabelle gehört, die CONTROL-Berechtigung für die Tabelle oder die Mitgliedschaft in der festen Datenbankrolle db_ddladmin.

A.Ablegen einer Tabelle in der aktuellen Datenbank

Im folgenden Beispiel werden die ProductVendor1-Tabelle, ihre Daten und ihre Indizes aus der aktuellen Datenbank entfernt.

DROP TABLE ProductVendor1 ;  

B.Ablegen einer Tabelle in einer anderen Datenbank

Im folgenden Beispiel wird die SalesPerson2-Tabelle in der AdventureWorks2012-Datenbank gelöscht. Das Beispiel kann aus jeder Datenbank auf der Serverinstanz heraus ausgeführt werden.

DROP TABLE AdventureWorks2012.dbo.SalesPerson2 ;  

C.Ablegen einer temporären Tabelle

Im folgenden Beispiel wird eine temporäre Tabelle erstellt, überprüft, ob sie vorhanden ist, die Tabelle gelöscht und erneut überprüft, ob sie vorhanden ist.

CREATE TABLE #temptable (col1 int);  
GO  
INSERT INTO #temptable  
VALUES (10);  
GO  
SELECT * FROM #temptable;  
GO  
IF OBJECT_ID(N'tempdb..#temptable', N'U') IS NOT NULL   
DROP TABLE #temptable;  
GO  
--Test the drop.  
SELECT * FROM #temptable;  
  

ALTER TABLE (Transact-SQL)
CREATE TABLE (Transact-SQL)
DELETE (Transact-SQL)
sp_help (Transact-SQL)
sp_spaceused (Transact-SQL)
TRUNCATE TABLE (Transact-SQL)
DROP VIEW (Transact-SQL)
DROP PROCEDURE (Transact-SQL)
EVENTDATA (Transact-SQL)
sys.sql_expression_dependencies (Transact-SQL)

Community-Beiträge

Anzeigen: