Hoe DROP te gebruiken ALS BESTAAT in SQL Server?



Probeer Ons Instrument Voor Het Oplossen Van Problemen

Dit artikel bespreekt de 'DROP INDIEN BESTAAT' statement beschikbaar in SQL Server 2016 en latere versies. 'ALS VERLATEN' is de nieuwste optionele clausule die is toegevoegd in de bestaande DROP-instructie in SQL Server 2016 en latere versies. In wezen is het '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 vervolgens opnieuw maken met eventuele wijzigingen.



Het voorkomt dus de oude manier van schrijven if-conditie en binnen de if-conditie het schrijven van een verklaring om de aanwezigheid van het object te testen om het te laten vallen. Als dit niet het geval is, wordt de volgende instructie in de batch verder uitgevoerd. Maar als we een object proberen te laten vallen dat niet bestaat, zal er een foutmelding verschijnen zoals hieronder weergegeven.



Voer de volgende query uit.



drop table dbo.company

De output zal als volgt zijn.

De fout treedt op bij het verwijderen van het databaseobject dat niet bestaat

Syntaxis

'DROP object_type [IF EXISTS] objectnaam'

Argumenten

OBJECT TYPE:



Het objecttype kan iedereen zijn uit de database, trigger, assembly, sequentie, index, tabel, procedureview, functie, etc.

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

Nu 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'.

Een database aanmaken

Nu gaan we een tabel maken die moet worden verwijderd door de volgende code uit te voeren.

gebruik [appuals] Go CREATE TABLE temp (id INT, naam varchar (100)); GAAN

De output is als volgt.

Tafel maken

Maak verder een opslagprocedure 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] ZOALS BEGIN NOCOUNT AAN; SELECTEER * van dbo.temp; EINDE

De output is zoals hieronder.

Store procedure creatie

Oude methode: voordat SQL Server werd gebruikt, werd drop if exits op databaseobjecten gebruikt

Het gebruik van de DROP IF EXISTS-methode vóór SQL Server 2016 vereiste het schrijven van lange IF-instructie wrappercode.

Laat de tafel vallen als deze bestaat

De eerdere methode om een ​​tabel te laten vallen is als volgt.

Als we SQL Server 2015 of eerder gebruiken, moeten we de volgende reeks code uitvoeren.

If (OBJECT_ID ('dbo.temp') Is Not Null) Drop Table temp

De output is als volgt.

De tafel laten vallen

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 zal er een fout optreden als de opgeslagen procedure niet bestaat.

Voer nu de volgende instructies uit om de procedure te verwijderen in versies lager dan SQL Server 2016.

ALS BESTAAT (SELECTEER 1 UIT sys.procedures WAAR Name = 'sp_temp') DROP PROCEDURE dbo.sp_temp

De output zal als volgt zijn.

Laat de procedure vallen door de oude methode if wrapper code te gebruiken

Verwijder de 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 output is als volgt.

Verwijder de database door een oude methode te gebruiken

Nieuwe methode: DROP IF EXISTS ondersteund in SQL Server 2016 en hoger

Om een ​​databaseobject in SQL Server 2016 en hoger neer te zetten, moeten we een eenvoudige instructie uitvoeren.

Drop-tabel indien aanwezig:

We kunnen een verklaring schrijven zoals hieronder in SQL Server 2016 om een ​​opgeslagen tabel te verwijderen als deze bestaat.

DROP TABLE INDIEN BESTAAT dbo.temp

De output zal als volgt zijn.

Zet de tabel neer met behulp van de nieuwe methode

Drop procedure 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 output is zoals hieronder.

Zet de tabel neer met behulp van de nieuwe methode

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 de database als deze bestaat:

Voer de volgende code uit als u de database wilt verwijderen door gebruik te maken van if exist check

GEBRUIK MASTER GO DROP DATABASE INDIEN BESTAAT appuals

De output is zoals hieronder.

Verwijder de database met behulp van de nieuwe methode

Het voordeel van het gebruik van deze methode is dat als de database niet bestaat, deze geen fout veroorzaakt, de volgende instructie in de batch wordt verder uitgevoerd. Laten we proberen de reeds verwijderde database opnieuw te verwijderen.

De fout treedt op bij het opnieuw verwijderen van de reeds verwijderde database.

Evenzo kunnen we indexen, views, sequenties, samenstellingen, etc. uit de database halen.

3 minuten gelezen