Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí na:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytický platformový systém (PDW)
Sklad v Microsoft Fabric
Odstraní jednu nebo více definic tabulek a všechna data, indexy, spouštěče, omezení a specifikace oprávnění pro tyto tabulky. Jakýkoli pohled nebo uložená procedura, která odkazuje na vypuštěnou tabulku, musí být explicitně odstraněna pomocí DROP VIEW nebo DROP PROCEDURE. Pro hlášení závislostí v tabulce použijte sys.dm_sql_referencing_entities.
Syntaxe
-- 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
Je název databáze, ve které byla tabulka vytvořena.
Azure SQL Database podporuje tříčlenný formát database_name.schema_name.object_name názvu, když database_name je aktuální databáze nebo database_name je tempdb a object_name začíná na # nebo ##. Azure SQL Database nepodporuje čtyřdílné názvy.
POKUD EXISTUJE
Platí na: SQL Server (SQL Server 2016 (13.x) až po současnou verzi).
Podmíněně ukončí tabuli pouze tehdy, pokud už existuje.
schema_name
Je název schématu, ke kterému tabulka patří.
table_name
Je název tabulky, která má být odstraněna.
Poznámky
DROP TABLE nelze použít k odstranění tabulky, na kterou se odkazuje nějaké omezení FOREIGN KEY . Nejprve musí být odstraněno FOREIGN KEY referenční omezení nebo referenční tabulka.
Ve stejném DROP TABLE příkazu lze vyřadit více tabulek. Pokud jsou v jednom DROP TABLE příkazu vyhazovány jak referenční tabulka v omezeníFOREIGN KEY, tak tabulka s odkazovaným primárním nebo jedinečným klíčem, musí být referenční tabulka uvedena jako první.
Když dojde k vyřazení tabulky, pravidla nebo výchozí nastavení tabulky ztratí vazbu a všechna omezení nebo triggery přidružené k tabulce se automaticky zahodí. Pokud znovu vytvoříte tabulku, musíte znovu vytvořit vazbu odpovídajících pravidel a výchozích hodnot, znovu vytvořit všechny triggery a přidat všechna požadovaná omezení.
Pokud smažete všechny řádky v tabulce pomocí DELETE příkazu nebo příkazu TRUNCATE TABLE , definice tabulky existuje, dokud není odstraněna pomocí DROP TABLE.
Pokud odstraníte tabulku obsahující sloupec varbinary(max) s atributem FILESTREAM , žádná data uložená v souborovém systému nejsou odstraněna.
Když je tabulka účetní knihy vyřazena, jsou také odstraněny její závislé objekty (historická tabulka a pohled v účetní účetní evidenci). Historická tabulka nebo pohled na účetní knihu nelze přímo vyřadit. Systém vynucuje soft-delete sémantiku při vyhazování ledger tabulek a jejich závislých objektů – ty nejsou ve skutečnosti vyhazovány, ale jsou označeny jako zapuštěné v systémových katalogových pohledech a přejmenovány. Pro více informací viz úvahy a omezení účetní knihy.
Důležité
DROP TABLE a CREATE TABLE nemělo by se provádět na stejném stole ve stejné dávce. V opačném případě může dojít k neočekávané chybě.
V databázi Fabric SQL se při vyhazování tabulky vyřadí jak z databáze, tak z Fabric OneLake. Všechna zrcadlená data pro vyřazenou tabuli jsou odstraněna.
Odložené oddělování
Když je tabulka vypuštěna a tabulka nebo její indexy mají 128 nebo více rozsahů, databázový engine odloží skutečné deallokace stránek a jejich přidružené zámky až po dokončení transakce. Tabulka a indexy jsou rozděleny do dvou samostatných fází: logické a fyzické. V logické fázi jsou stávající alokační jednotky označeny k dealokaci a uzamčeny, dokud transakce není schválena. Ve fyzické fázi proces na pozadí odstraní stránky označené pro deallocation. To znamená, že uvolněný prostor nemusí DROP TABLE být okamžitě k dispozici pro nové alokace.
Pokud je povolena zrychlená obnova databáze , používají se oddělené logické a fyzické fáze bez ohledu na počet rozsahů.
Povolení
Vyžaduje oprávnění ALTER ke schématu, ke kterému tabulka patří, CONTROL povolení k tabulce nebo členství v pevné databázové db_ddladmin roli.
Pokud výpis spadne do tabulky účetní knihy, je vyžadováno povolení ALTER LEDGER .
Examples
A. Ukládání tabulky do aktuální databáze
Následující příklad odstraní tabulku ProductVendor1 a její data a indexy z aktuální databáze.
DROP TABLE ProductVendor1;
B. Ukládání tabulky do jiné databáze
Následující příklad zahodí SalesPerson2 tabulku v AdventureWorks2025 databázi. Příklad lze spustit z jakékoli databáze na instanci serveru.
DROP TABLE AdventureWorks2022.dbo.SalesPerson2 ;
C. Zrušení dočasného stolu
Následující příklad vytváří dočasnou tabulku, testuje její existenci, zruší ji a znovu otestuje její existenci pokusem o vykonání příkazu SELECT , který však selže. Tento příklad nepoužívá syntaxi IF EXISTS , která je dostupná od 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. Upuštění tabulky pomocí IF EXISTS
Platí na: SQL Server (SQL Server 2016 (13.x) až po současnou verzi).
Následující příklad vytváří tabulku s názvem T1. Pak druhý výrok spadne na stůl. Třetí příkaz nevykoná žádnou akci, protože tabulka už byla odložena, ale nezpůsobuje chybu.
CREATE TABLE T1 (Col1 int);
DROP TABLE T1;
DROP TABLE IF EXISTS T1;