Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform Systeem (PDW)
Magazijn in Microsoft Fabric
Verwijdert één of meer tabeldefinities en alle data, indexen, triggers, beperkingen en toestemmingsspecificaties voor die tabellen. Elke weergave of opgeslagen procedure die verwijst naar de gedropte tabel moet expliciet worden verwijderd door gebruik te maken van DROP VIEW of DROP PROCEDURE. Om de afhankelijkheden in een tabel te rapporteren, gebruik je sys.dm_sql_referencing_entities.
Transact-SQL syntaxis-conventies
Syntaxis
-- 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
Is de naam van de database waarin de tabel is aangemaakt.
Azure SQL Database ondersteunt het driedelige naamformaat database_name.schema_name.object_name wanneer database_name de huidige database is of database_name is tempdb en object_name begint met # of ##. Azure SQL Database ondersteunt geen vierdelige namen.
ALS AANWEZIG
Van toepassing op: SQL Server (SQL Server 2016 (13.x) tot en met de huidige versie).
Voorwaardelijk laat de tabel vallen alleen als deze al bestaat.
schema_name
Is de naam van het schema waartoe de tabel behoort.
table_name
Is de naam van de tabel die verwijderd moet worden.
Opmerkingen
DROP TABLE Kan niet worden gebruikt om een tabel te verwijderen die door een FOREIGN KEY constraint wordt aangeduid. De referentiebeperking FOREIGN KEY of de referentietabel moet eerst worden losgelaten.
Meerdere tabellen kunnen in dezelfde DROP TABLE verklaring worden geplaatst. Als zowel de referentietabel in een FOREIGN KEY constraint als de tabel met de gerefereerde primaire of unieke sleutel in dezelfde DROP TABLE statement worden verwijderd, moet de referentietabel eerst worden vermeld.
Wanneer een tabel wordt verwijderd, gaan regels of standaardwaarden in de tabel hun binding verloren en worden eventuele beperkingen of triggers die aan de tabel zijn gekoppeld, automatisch verwijderd. Als u een tabel opnieuw maakt, moet u de juiste regels en standaardwaarden opnieuw combineren, triggers opnieuw maken en alle vereiste beperkingen toevoegen.
Als je alle rijen in een tabel verwijdert door de DELETE instructie te gebruiken of de TRUNCATE TABLE instructie gebruikt, bestaat de tabeldefinitie totdat deze wordt verwijderd met DROP TABLE.
Als je een tabel verwijdert die een varbinary(max) kolom met het FILESTREAM attribuut bevat, worden alle gegevens die in het bestandssysteem zijn opgeslagen niet verwijderd.
Wanneer een grootboektabel wordt verwijderd, worden ook de afhankelijke objecten (de geschiedenistabel en het grootboekbeeld) verwijderd. Een geschiedenistabel of een grootboekweergave kan niet direct worden verwijderd. Het systeem handhaaft een zachte verwijderingssemantiek bij het verwijderen van grootboektabellen en hun afhankelijke objecten – ze worden niet daadwerkelijk weggelaten, maar gemarkeerd als weggelaten in systeemcatalogusweergaven en hernoemd. Voor meer informatie, zie Ledger-overwegingen en beperkingen.
Belangrijk
DROP TABLE en CREATE TABLE zou niet op dezelfde tabel in dezelfde batch uitgevoerd moeten worden. Anders kan er een onverwachte fout optreden.
In een Fabric SQL-database verwijdert het plaatsen van een tabel deze zowel uit de database als uit Fabric OneLake. Alle gespiegelde gegevens voor de gedropte tabel worden verwijderd.
Uitgestelde deallocatie
Wanneer een tabel wordt verwijderd en de tabel of haar indexen 128 extents of meer hebben, stelt de Database Engine de daadwerkelijke pagina-deallocaties en de bijbehorende locks uit tot na de transactie. De tabel en indexen worden in twee afzonderlijke fasen verwijderd: logisch en fysiek. In de logische fase worden de bestaande allocatie-eenheden gemarkeerd voor deallocatie en vergrendeld totdat de transactie wordt gecommend. In de fysieke fase verwijdert een achtergrondproces de pagina's die voor deallocatie zijn gemarkeerd. Dit betekent dat de ruimte die door DROP TABLE wordt vrijgegeven, mogelijk niet direct beschikbaar is voor nieuwe toewijzingen.
Als versnelde databaseherstel is ingeschakeld, worden de afzonderlijke logische en fysieke fasen gebruikt, ongeacht het aantal extents.
Permissions
Vereist de ALTER toestemming voor het schema waartoe de tabel behoort, CONTROL toestemming voor de tabel, of lidmaatschap van de db_ddladmin vaste databaserol.
Als de verklaring een grootboektabel laat vallen, is de ALTER LEDGER toestemming vereist.
Voorbeelden
Eén. Een tabel verwijderen in de huidige database
Het volgende voorbeeld verwijdert de ProductVendor1 tabel en de bijbehorende gegevens en indexen uit de huidige database.
DROP TABLE ProductVendor1;
B. Een tabel verwijderen in een andere database
In het volgende voorbeeld wordt de SalesPerson2 tabel in de AdventureWorks2025 database verwijderd. Het voorbeeld kan vanuit elke database op de serverinstantie worden uitgevoerd.
DROP TABLE AdventureWorks2022.dbo.SalesPerson2 ;
C. Een tijdelijke tafel laten vallen
Het volgende voorbeeld maakt een tijdelijke tabel aan, test op het bestaan ervan, laat deze vallen en test opnieuw op het bestaan ervan door te proberen een SELECT instructie uit te voeren, wat faalt. Dit voorbeeld gebruikt niet de IF EXISTS syntaxis die beschikbaar is vanaf 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. Een tabel verwijderen met IF EXISTS
Van toepassing op: SQL Server (SQL Server 2016 (13.x) tot en met de huidige versie).
Het volgende voorbeeld creëert een tabel genaamd T1. Dan laat de tweede statement de tabel vallen. De derde instructie voert geen actie uit omdat de tabel al is verwijderd, maar veroorzaakt geen fout.
CREATE TABLE T1 (Col1 int);
DROP TABLE T1;
DROP TABLE IF EXISTS T1;