DROP-TABELL (Transact-SQL)

Gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalysplattformssystem (PDW)Lager i Microsoft Fabric

Tar bort en eller flera tabelldefinitioner samt all data, index, triggers, begränsningar och behörighetsspecifikationer för dessa tabeller. Alla vyer eller lagrade procedurer som refererar till den droppade tabellen måste uttryckligen tas bort med hjälp av DROP VIEW eller DROP PROCEDURE. För att rapportera beroendena i en tabell, använd sys.dm_sql_referencing_entities.

Transact-SQL syntaxkonventioner

Syntax

-- 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

Är namnet på databasen där tabellen skapades.

Azure SQL Database stöder det tredelade namnformatet database_name.schema_name.object_name när database_name är den aktuella databasen eller database_name är tempdb och object_name börjar med # eller ##. Azure SQL Database stöder inte fyrdelade namn.

OM DET FINNS

Gäller för: SQL Server (SQL Server 2016 (13.x) till nuvarande version).

Tar bort tabellen villkorligt endast om den redan finns.

schema_name

Är namnet på schemat som tabellen tillhör.

table_name

Är namnet på tabellen som ska tas bort.

Anmärkningar

DROP TABLE Kan inte användas för att släppa en tabell som refereras av en FOREIGN KEY begränsning. Referensbegränsningen FOREIGN KEY eller referenstabellen måste först tas bort.

Flera tabeller kan läggas in i samma DROP TABLE sats. Om både referenstabellen i en FOREIGN KEY begränsning och tabellen med den refererade primära eller unika nyckeln tas bort i samma DROP TABLE sats, måste referenstabellen listas först.

När en tabell tas bort förlorar regler eller standardvärden i tabellen sin bindning, och eventuella begränsningar eller utlösare som är associerade med tabellen tas bort automatiskt. Om du återskapar en tabell måste du ombinda lämpliga regler och standardvärden, återskapa utlösare och lägga till alla nödvändiga begränsningar.

Om du raderar alla rader i en tabell genom att använda satsen DELETE eller använder TRUNCATE TABLE satsen, existerar tabelldefinitionen tills den tas bort med .DROP TABLE

Om du tar bort en tabell som innehåller en varbinary(max) kolumn med attributet FILESTREAM , tas inte all data som lagras i filsystemet bort.

När en huvudbokstabell tas bort tas även dess beroende objekt (historiktabellen och huvudboksvyn) bort. En historiktabell eller en huvudbok kan inte tas bort direkt. Systemet upprätthåller en mjuk borttagningssemantik när man släpper huvudbokstabeller och dess beroende objekt – de tas inte bort, utan markeras istället som borttagna i systemkatalogvyer och byter namn. För mer information, se Ledger considerations and limitations.

Viktigt!

DROP TABLE och CREATE TABLE bör inte köras på samma tabell i samma batch. Annars kan ett oväntat fel inträffa.

I Fabric SQL-databasen tar en tabell bort både från databasen och från Fabric OneLake. All speglad data för den bortsläppta tabellen tas bort.

Uppskjuten avallokering

När en tabell tas bort och tabellen eller dess index har 128 extents eller fler, skjuter databasmotorn upp de faktiska sidutdelningarna och deras tillhörande lås tills transaktionen har kommittats. Tabellen och indexen tas bort i två separata faser: logiska och fysiska. I den logiska fasen är de befintliga allokeringsenheterna markerade för avallokering och låsta tills transaktionen genomförs. I den fysiska fasen tar en bakgrundsprocess bort sidorna som är markerade för överlämning. Detta innebär att det utrymme som frigörs DROP TABLE kanske inte är tillgängligt för nya tilldelningar omedelbart.

Om accelererad databasåterställning är aktiverad används de separata logiska och fysiska faserna oavsett antalet utsträckningar.

Permissions

Kräver ALTER behörighet på schemat som tabellen tillhör, CONTROL behörighet på tabellen eller medlemskap i den db_ddladmin fasta databasrollen.

Om uttalandet släpper en huvudbokstabell krävs behörighet ALTER LEDGER .

Examples

A. Att lägga bort en tabell i den aktuella databasen

Följande exempel tar bort ProductVendor1 tabellen och dess data och index från den aktuella databasen.

DROP TABLE ProductVendor1;

B. Att lägga en tabell i en annan databas

I följande exempel släpps SalesPerson2 tabellen i AdventureWorks2025 databasen. Exemplet kan köras från vilken databas som helst på serverinstansen.

DROP TABLE AdventureWorks2022.dbo.SalesPerson2 ;

C. Att ta bort ett tillfälligt bord

Följande exempel skapar en tillfällig tabell, testar dess existens, släpper den och testar igen för dess existens genom att försöka köra en SELECT sats, vilket misslyckas. Detta exempel använder inte syntaxen IF EXISTS som finns tillgänglig från och med SQL Server 2016 (13.x).

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. Att ta bort en tabell med hjälp av IF EXIST.

Gäller för: SQL Server (SQL Server 2016 (13.x) till nuvarande version).

Följande exempel skapar en tabell som heter T1. Sedan tar det andra uttalandet bort tabellen. Den tredje satsen utför ingen åtgärd eftersom tabellen redan är borttagen, men den orsakar inget fel.

CREATE TABLE T1 (Col1 int);

DROP TABLE T1;

DROP TABLE IF EXISTS T1;