Kuidas kasutada SQL Serveris DROP IF EXISIT?



Proovige Meie Instrumenti Probleemide Kõrvaldamiseks

Selles artiklis käsitletakse 'LENNU, KUI OLEMAS' lause on saadaval SQL Server 2016 ja uuemates versioonides. „KUI VÄLJU“ on uusim valikuline lause, mis on lisatud olemasolevasse DROP-lausesse SQL Server 2016 ja uuemates versioonides. Põhimõtteliselt 'LENNU, KUI OLEMAS' suvandit kasutatakse siis, kui on vaja kontrollida, kas üksus jääb andmebaasi enne selle loomist või langetamist. Sel juhul viskame esmalt olemasoleva andmebaasi objekti maha ja loome siis vajadusel muudatustega.



Seega takistab see vana viisi kirjutamist, kui tingimus, ja sees, kui tingimus, kirjutades avalduse objekti olemasolu testimiseks, et see ära visata. Kui seda ei juhtu, jätkatakse järgmise lause pakkimist. Kuid kui proovime visata objekti, mida pole olemas, siis tõstatab see veateate, nagu allpool näidatud.



Käivitage järgmine päring.



tilk tabel dbo.ettevõte

Väljund saab olema selline.

Viga ilmneb andmebaasiobjekti viskamisel, mida pole olemas

Süntaks

„DROP object_type [IF EXISTS] object_name”

Argumendid

OBJECT_TYPE:



Objektitüübiks võib olla igaüks andmebaasist, päästikust, assambleest, järjestusest, indeksist, tabelist, protseduurivaatest, funktsioonist jne.

KUI ON:

See on valikuline klausel ja kui seda mainitakse DROP-lauses, kontrollib see objekti olemasolu, kui see on olemas, siis see langeb, vastasel juhul jätkab see järgmise lause täitmist plokis ilma vigu tekitamata.

Uue meetodi „DROP IF EXISTS” kasutuselevõtuga saavad SQL Server 2016 arendajad kirjutada lühikese koodi.

Kõigepealt looge andmebaas nimega “appuals”.

Andmebaasi loomine

Nüüd loome järgmise koodi käivitamisel tabeli, mille saab maha visata.

kasuta [appuals] Go CREATE TABLE temp (id INT, nimi varchar (100)); GO

Väljund on järgmine.

Laua loomine

Looge järgmise koodi abil poeprotseduur, mis loobutakse.

KASUTA [appuals] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO Loo PROTSEDUUR [dbo]. [Sp_temp] NAGU ALGADA NOKOONDIGA SEES; SELECT * kohast dbo.temp; LÕPP

Väljund on järgmine.

Salvesta protseduuri loomine

Vana meetod: Enne kui SQL Server kasutab andmebaasiobjektidest väljumise korral drop-i

DROP IF EXISTS meetodi kasutamine enne SQL Server 2016 nõudis pika IF-lause mähiste koodi kirjutamist.

Kui tabel on olemas, kukutage tabel ära

Varasem tabeli langetamise meetod on järgmine.

Kui kasutame SQL Server 2015 või varasemat versiooni, peame käivitama järgmise koodikimbu.

Kui (OBJECT_ID ('dbo.temp') pole tühi) Drop Table temp

Väljund on järgmine.

Laua kukutamine

Nüüd on selle süntaks üsna segane, nii et kui see teile ei meeldi ja kasutate SQL Server 2016 või uuemat versiooni, võite suurte ümbriste asemel kasutada lihtsat DROP IF EXIST-lauset.

Drop Store'i protseduur, kui see on olemas:

Protseduuri tühistamiseks peame kirjutama tingimusliku avalduse, et kontrollida, kas poeprotseduur on olemas või mitte, seejärel kirjutada drop-lause. Vastasel juhul tekitab see vea juhul, kui salvestatud protseduuri pole olemas.

Nüüd toimige järgmiste lausete abil protseduuri langetamiseks versioonidest, mis on madalamad kui SQL Server 2016.

KUI OLEMAS (VALI 1 SYS.procedures'ist WHERE nimi = 'sp_temp') LÕPPEMENETLUS dbo.sp_temp

Väljund saab olema selline.

Protseduur, kasutades vana meetodit if ümbrise kood

Andmebaasi viskamine, kui see on olemas:

Kui kasutate SQL Serveri eelmisi versioone, peate andmebaasi viskamiseks täitma järgmise koodi.

KUI DB_ID ('appuals') EI OLE NULL BEGIN DROP DATABASE rakenduste LÕPP

Väljund on järgmine.

Pange andmebaas vana meetodi abil alla

Uus meetod: DROP IF EXISTS toetab SQL Server 2016 ja uuem versioon

Andmebaasi objekti viskamiseks SQL Server 2016-s ja uuemates versioonides peame käivitama lihtsa avalduse.

Tabeli kukutamine, kui see on olemas:

Salvestatud tabeli eemaldamiseks, kui see on olemas, saame SQL Server 2016-s allpool avalduse kirjutada.

LABA TABEL, KUI ON DPO.temp

Väljund saab olema selline.

Lohista tabel uue meetodi abil

Kukutamisprotseduur, kui see on olemas:

Nüüd loobume artikli alguses loodud salvestatud protseduurist, käivitades järgmise koodi.

LÕPETAMISE MENETLUS KUI OLEMAS dbo.sp_temp

Väljund on järgmine.

Lohista tabel uue meetodi abil

Mis puutub süntaksi, siis seda lihtsat väidet on lihtne mõista ja lihtsalt meelde jätta. Samamoodi võime järgida sama protseduuri teiste andmebaasi objektide viskamiseks.

Andmebaasi viskamine, kui see on olemas:

Kui soovite andmebaasi loobuda, käivitage järgmine kood, kui kasutate kontrolli

KASUTAGE MASTER GO DROP DATABASE, KUI OLEMAS on rakendusi

Väljund on järgmine.

Uue meetodi abil andmebaasi viskamine

Selle meetodi kasutamise eeliseks on see, et kui andmebaasi pole olemas, ei põhjusta see viga, jätkatakse selle järgmise lause täitmist. Proovime juba langenud andmebaasi uuesti visata.

Viga ilmneb juba mahajäetud andmebaasi uuesti viskamisel.

Samamoodi võime andmebaasist loobuda indeksid, vaated, järjestused, kooslused jne.

3 minutit loetud