Megosztás a következőn keresztül:


DROP TABLE (Transact-SQL)

Vonatkozik a következőkre:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalitikai Platform System (PDW)Raktár a Microsoft Fabric-ben

Eltávolítja egy vagy több tábladefiníciót, valamint az összes adatot, indexet, triggeret, korlátozást és jogosultsági specifikációt ezekhez a táblákhoz. Bármely nézetet vagy tárolt eljárást, amely hivatkozik az eldobott táblára, kifejezetten le kell ejteni a DROP VIEW vagy DROP PROCEDURE használatával. A függőségek jelentéséhez táblázaton használd a sys.dm_sql_referencing_entities.

Transact-SQL szintaxis konvenciók

Szemantika

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

Az adatbázis neve, amelyben a tábla létrejött.

Az Azure SQL Database támogatja a háromrészes névformátumot database_name.schema_name.object_name , amikor database_name az aktuális adatbázis vagy database_name az tempdb és object_name kezdődik # vagy ##. Az Azure SQL Database nem támogatja a négyrészes neveket.

HA LÉTEZIK AZ

A következőkre vonatkozik: SQL Server ( SQL Server 2016 (13.x) az aktuális verzión keresztül.

Feltételesen csak akkor engedi el a táblázatot, ha már létezik.

schema_name

Ez a táblázat szerinti séma neve.

table_name

A táblázat nevét kell eltávolítani?

Megjegyzések

DROP TABLE Nem használható olyan táblázat eldobására, amelyhez egy korlátozás hivatkozik FOREIGN KEY . Először a hivatkozási FOREIGN KEY korlátozást vagy a hivatkozási táblát kell eltávolítani.

Több táblázatot is lehet kidobni ugyanabban DROP TABLE az utasításban. Ha mind a hivatkozási táblát egy FOREIGN KEY korlátozásban, mind a hivatkozott elsődleges vagy egyedi kulcsot tartalmazó táblázatot ugyanabban DROP TABLE az állításban hagyják el, akkor először a hivatkozási táblát kell felsorolni.

Ha egy táblát elvet, a táblán lévő szabályok vagy alapértelmezett értékek elveszítik a kötésüket, és a táblához társított megkötések vagy eseményindítók automatikusan elvesznek. Ha újra létrehoz egy táblát, újra kell fűznie a megfelelő szabályokat és alapértelmezett értékeket, újra létre kell hoznia az eseményindítókat, és hozzá kell adnia az összes szükséges korlátozást.

Ha az utasítással vagy az utasítással törlöd az összes sort egy táblázatból DELETETRUNCATE TABLE, a tábladefiníció addig marad, amíg el nem dobjuk a .DROP TABLE

Ha eldobsz egy táblát, amely tartalmaz egy varbinary(max) oszlopot az attribútummal FILESTREAM , a fájlrendszerben tárolt adatok nem kerülnek el.

Amikor egy főkönyvtáblát eldobnak, annak függő objektumai (a történettáblázat és a főkönyv nézet) is eltűnnek. A történettáblázat vagy a ledger nézet nem lehet közvetlenül kidobni. A rendszer leegyszerűsíti a szemantika törlését, amikor a ledger táblákat és a függő objektumokat eltávolítják – valójában nem hagyják el őket, hanem a rendszer katalógusnézeteiben elhagyottnak jelölik őket, majd átnevezik. További információért lásd: Ledger szempontok és korlátozások.

Fontos

DROP TABLE és CREATE TABLE nem szabad ugyanazon az asztalon ugyanazon a tételben végrehajtani. Ellenkező esetben váratlan hiba léphet fel.

A Fabric SQL adatbázisban egy táblázat eltávolítása mind az adatbázisból, mind a Fabric OneLake-ből eltávolítja azt. Az összes tükrözött adat a kidobott táblához kerül.

Halasztott kiosztás

Ha egy táblát eltávolítanak, és a tábla vagy indexei 128 vagy annál több kiterjesztést tartalmaznak, az Adatbázis Motor elhalasztja a tényleges oldal kioldását és a hozzájuk tartozó zárolásokat a tranzakció elvégzése utánig. A táblázat és az indexek két külön fázisban kerülnek ki: logikai és fizikai. A logikai fázisban a meglévő allokációs egységeket megjelölik deallokációra, és le vannak zárva, amíg a tranzakció el nem köteleződik. A fizikai fázisban egy háttérfolyamat eltávolítja a kiosztásra jelölt oldalakat. Ez azt jelenti, hogy az általa DROP TABLE felengedett hely nem feltétlenül válik azonnal elérhetővé új elosztásokhoz.

Ha a gyorsított adatbázis-helyreállítás engedélyezve van, akkor a külön logikai és fizikai fázisokat használják a kiterjedések számától függetlenül.

Permissions

Megköveteli a ALTER sémához tartozó engedélyt, CONTROL az asztalra vonatkozó engedélyt, vagy a db_ddladmin fix adatbázis szerepben való tagságot.

Ha a kivonat elengedi a ledger táblát, engedély ALTER LEDGER szükséges.

Példák

A. Egy táblázat eltávolítása a jelenlegi adatbázisban

A következő példa eltávolítja a ProductVendor1 táblát, valamint annak adatait és indexeit a jelenlegi adatbázisból.

DROP TABLE ProductVendor1;

B. Egy táblázat eldobása egy másik adatbázisba

Az alábbi példa elveti a SalesPerson2 táblát az AdventureWorks2025 adatbázisban. A példa bármely adatbázisból futtatható a szerver példányon.

DROP TABLE AdventureWorks2022.dbo.SalesPerson2 ;

C. Egy ideiglenes asztal ledobása

A következő példa ideiglenes táblát hoz létre, teszteli a létezését, eldobja, majd újra teszteli a létezését egy utasítás végrehajtásával SELECT , ami sikertelenül működik. Ez a példa nem használja azt a IF EXISTS szintaxist, amely az SQL Server 2016-tól (13.x) érhető el.

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. Táblázat eldobása az IF EXISTS használatával

A következőkre vonatkozik: SQL Server ( SQL Server 2016 (13.x) az aktuális verzión keresztül.

A következő példa egy táblát hoz létre .T1 Aztán a második állítás elengedi a táblázatot. A harmadik állítás nem hajt végre semmilyen műveletet, mert a tábla már el van dobva, de nem okoz hibát.

CREATE TABLE T1 (Col1 int);

DROP TABLE T1;

DROP TABLE IF EXISTS T1;