Hoe DROP IF EXISTS te gebruiken in SQL Server?
Dit artikel bespreekt de “LATEN ALS ER BESTAAT” statement beschikbaar in SQL Server 2016 en latere versies. “ALS UITGANG” is de nieuwste optionele clausule die is toegevoegd aan de bestaande DROP-instructie in SQL Server 2016 en latere versies. In wezen is de "DROP INDIEN BESTAAT" optie wordt gebruikt wanneer het nodig is om te controleren of een entiteit in een database blijft voordat deze wordt gemaakt of verwijderd. In dit geval zullen we eerst het bestaande database-object verwijderen en het indien nodig opnieuw maken met wijzigingen.
Het voorkomt dus dat de oude manier van schrijven als-voorwaarde en binnen de als-voorwaarde het schrijven van een verklaring om de aanwezigheid van het object te testen om het te laten vallen. Als dit niet gebeurt, wordt het volgende statement in de batch uitgevoerd. Maar als we proberen een object te verwijderen dat niet bestaat, wordt er een foutmelding weergegeven zoals hieronder wordt weergegeven.
Voer de volgende query uit.
drop tafel dbo.company
De uitvoer zal als volgt zijn.
Syntaxis
"DROP object_type [ ALS BESTAAT ] object_name"
Argumenten
OBJECT TYPE:
Het objecttype kan iedereen zijn uit de database, trigger, assembly, sequentie, index, tabel, procedureweergave, functie, enz.
INDIEN BESTAAT:
Het is een optionele clausule en als het wordt vermeld in het DROP-statement, zal het het bestaan van het object controleren, als het bestaat, zal het vallen, anders zal het doorgaan met het uitvoeren van de volgende instructie in het blok zonder fouten te produceren.
Met de introductie van de nieuwe methode "DROP IF EXISTS" in SQL Server 2016 kunnen ontwikkelaars korte code schrijven.
Maak eerst een database met de naam "appuals".
Nu gaan we een tabel maken die moet worden verwijderd door de volgende code uit te voeren.
gebruik [appuals] Ga CREATE TABLE temp ( id INT, naam varchar(100)); GAAN
De uitvoer zal als volgt zijn.
Maak verder een winkelprocedure die moet worden verwijderd met behulp van de volgende code.
GEBRUIK [appuals] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO Maak PROCEDURE [dbo].[sp_temp] ALS BEGIN STEL NOCOUNT IN; SELECT * van dbo.temp; EINDE
De uitvoer zal zijn zoals hieronder.
Oude methode: Voorafgaand aan SQL Server met gebruik van drop if exits op databaseobjecten
Het gebruik van de DROP IF EXISTS-methode vóór SQL Server 2016 vereiste het schrijven van lange IF-wrapperscode.
Tabel laten vallen indien aanwezig
De eerdere methode om een tafel te laten vallen is als volgt.
Als we SQL Server 2015 of eerder gebruiken, moeten we de volgende code uitvoeren.
If(OBJECT_ID('dbo.temp') Is Not Null) Tabeltemp verlagen
De uitvoer zal als volgt zijn.
Nu is de syntaxis nogal verwarrend, dus als je het niet leuk vindt en je SQL Server 2016 of hoger gebruikt, kun je kiezen voor een eenvoudige DROP IF EXIST-instructie in plaats van grote wrappers.
Drop store-procedure indien aanwezig:
Om de procedure te laten vallen, moeten we een voorwaardelijke instructie schrijven om te controleren of de opslagprocedure bestaat of niet, en vervolgens de dropinstructie schrijven. Anders wordt er een fout gegenereerd als de opgeslagen procedure niet bestaat.
Voer nu de volgende instructies uit om de procedure in versies lager dan SQL Server 2016 te verwijderen.
INDIEN BESTAAT (SELECTEER 1 UIT sys.procedures WHERE Name = 'sp_temp') DROP-PROCEDURE dbo.sp_temp
De uitvoer zal als volgt zijn.
Verwijder database als deze bestaat:
Als u eerdere versies van SQL Server gebruikt, moet u de volgende code uitvoeren om de database te verwijderen.
ALS DB_ID ('appuals') NIET NULL IS BEGIN DROP DATABASE appuals END
De uitvoer zal als volgt zijn.
Nieuwe methode: DROP IF EXISTS ondersteund in SQL Server 2016 en hoger versie above
Om een databaseobject in SQL Server 2016 en hoger neer te zetten, moeten we een eenvoudige instructie uitvoeren.
Drop-tafel als deze bestaat:
We kunnen een instructie schrijven zoals hieronder in SQL Server 2016 om een opgeslagen tabel te verwijderen als deze bestaat.
DROP TABLE INDIEN BESTAAT dbo.temp
De uitvoer zal als volgt zijn.
Afvalprocedure indien aanwezig:
Nu zullen we de opgeslagen procedure die we aan het begin van het artikel hebben gemaakt, laten vallen door de volgende code uit te voeren.
DROP-PROCEDURE INDIEN BESTAAT dbo.sp_temp
De uitvoer zal zijn zoals hieronder.
Wat de syntaxis betreft, is deze eenvoudige verklaring gemakkelijk te begrijpen en gemakkelijk te onthouden. Op dezelfde manier kunnen we dezelfde procedure volgen om andere database-objecten te verwijderen.
Verwijder database als deze bestaat:
Voer de volgende code uit als u de database wilt verwijderen door gebruik te maken van de controle als er bestaat
GEBRUIK MASTER GO DROP DATABASE INDIEN BESTAAT appuals
De uitvoer zal zijn zoals hieronder.
Het voordeel van het gebruik van deze methode is dat als de database niet bestaat, deze geen fout zal veroorzaken, de volgende instructie in de batch wordt uitgevoerd. Laten we proberen de reeds verwijderde database opnieuw te verwijderen.
Op dezelfde manier kunnen we indexen, views, sequenties, samenstellingen, enz. uit de database verwijderen.