Eenvoudig een tabel in SQL laten vallen. Je gebruikt gewoon DROP TABLE myTable
waar myTable
is de naam van de tafel die u wilt laten vallen. U kunt deze methode gebruiken om een tabel in SQL Server te laten vallen via een T-SQL-script.
Maar u krijgt een foutmelding als de tabel niet echt bestaat. Dat wil zeggen, tenzij u eerst controleert of de tabel bestaat.
Hieronder staan vier manieren om T-SQL te gebruiken om te controleren of de tabel bestaat voordat deze wordt verwijderd.
Optie 1:De IF EXISTS
Clausule
Bij gebruik van SQL Server 2016 of later kunnen we de IF EXISTS
. gebruiken clausule van de DROP TABLE
statement om te controleren op het bestaan van de tabel voordat we deze proberen te verwijderen:
DROP TABLE IF EXISTS t1;
Dit laat een tabel met de naam t1
vallen als het bestaat.
Hier is het resultaat van het uitvoeren van de bovenstaande instructie wanneer de tabel bestaat (en daarom is verwijderd):
Commands completed successfully.
En dit is wat we krijgen als we de instructie onmiddellijk opnieuw uitvoeren (d.w.z. wanneer de tabel niet bestaat):
Commands completed successfully.
Zelfde uitgang. Dus de instructie wordt met succes uitgevoerd, of de tabel nu bestaat of niet.
Dit is wat er gebeurt als we proberen de tafel te laten vallen zonder de IF EXISTS
clausule:
DROP TABLE t1;
Resultaat:
Msg 3701, Level 11, State 5, Line 1 Cannot drop the table 't1', because it does not exist or you do not have permission.
Optie 2:Controleer de Object-ID
We kunnen ook de OBJECT_ID()
. gebruiken functie om te controleren of de tabel bestaat voordat we hem proberen te verwijderen:
IF OBJECT_ID(N'dbo.t1', N'U') IS NOT NULL
DROP TABLE dbo.t1;
GO
Het bovenstaande voorbeeld controleert de object-ID voor een dbo.t1
tafel. Het tweede argument voor OBJECT_ID()
specificeert het type object waarnaar we op zoek zijn. In dit geval gebruiken we U
, wat voor "door de gebruiker gedefinieerde tabel" is.
De OBJECT_ID()
retourneert het identificatienummer van het databaseobject van een object met een schemabereik. Als het object bestaat, retourneert het geen NULL en daarom kunnen we de tabel laten vallen. Als het object niet bestaat, of als je er geen toegang toe hebt, retourneert de functie NULL, en de DROP TABLE
instructie wordt niet uitgevoerd.
Optie 3:Query information_schema.tables
Een andere manier om te controleren of een tabel al bestaat, is door de information_schema.tables
. op te vragen bekijken:
IF EXISTS (
SELECT * FROM information_schema.tables
WHERE table_schema = 'dbo' AND table_name = 't1')
DROP TABLE dbo.t1;
Dat doet hetzelfde als het vorige voorbeeld; het controleert op het bestaan van de tabel en maakt het alleen aan als het niet bestaat.
Optie 4:Query sys.tables
We kunnen ook de sys.tables
. opvragen systeemcatalogusweergave:
IF EXISTS (
SELECT * FROM sys.tables t
JOIN sys.schemas s ON (t.schema_id = s.schema_id)
WHERE s.name = 'dbo' AND t.name = 't1')
DROP TABLE dbo.t1;
SQL Server biedt vele andere manieren om te controleren op het bestaan van tabellen. Zie 6 manieren om te controleren of een tabel bestaat in SQL Server voor voorbeelden.