Kako uporabiti DROP, ČE OBSTAJA v SQL Serverju?



Preizkusite Naš Instrument Za Odpravo Težav

Ta članek obravnava “PADEK, ČE OBSTAJA” stavek na voljo v SQL Server 2016 in novejših različicah. 'ČE IZHODI' je najnovejša neobvezna klavzula, dodana v obstoječi stavek DROP v SQL Server 2016 in novejših različicah. V bistvu “PADEK, ČE OBSTAJA” Možnost se uporablja, kadar je treba preveriti, ali entiteta ostane v zbirki podatkov, preden jo ustvarite ali spustite. V tem primeru bomo najprej spustili obstoječi objekt baze podatkov in ga po potrebi znova ustvarili s spremembami.



Tako preprečuje, da bi stari način zapisovanja if in znotraj if pogoja pisal stavek, da bi preizkusil prisotnost predmeta, da bi ga spustil. Če se to ne zgodi, se še naprej izvaja naslednji stavek v paketu. Če pa poskusimo spustiti predmet, ki ne obstaja, se bo prikazalo sporočilo o napaki, kot je prikazano spodaj.



Izvedite naslednjo poizvedbo.



spusti tabelo dbo.compodjetje

Izhod bo takšen.

Napaka se pojavi med spuščanjem predmeta baze podatkov, ki ne obstaja

Sintaksa

“DROP object_type [IF EXISTS] object_name”

Argumenti

OBJECT_TYPE:



Tip predmeta je lahko kdor koli iz baze podatkov, sprožilca, sklopa, zaporedja, indeksa, tabele, pogleda postopka, funkcije itd.

ČE OBSTAJA:

To je neobvezna klavzula in če je omenjena v stavku DROP, bo preverila obstoj predmeta, če obstaja, bo padla, sicer bo še naprej izvajala naslednji stavek v bloku, ne da bi povzročila napake.

Zdaj z uvedbo nove metode »DROP IF EXISTS« v SQL Server 2016 lahko razvijalci napišejo kratko kodo.

Najprej ustvarite bazo podatkov z imenom 'appuals'.

Ustvarjanje baze podatkov

Zdaj bomo ustvarili tabelo, ki jo bomo spustili z izvajanjem naslednje kode.

uporabite [appuals] Pojdi USTVARI TABELO temp (id INT, ime varchar (100)); GO

Rezultat bo naslednji.

Ustvarjanje tabele

Nadalje ustvarite postopek shranjevanja, ki ga želite spustiti s pomočjo naslednje kode.

UPORABI [appuals] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO Ustvari POSTOPEK [dbo]. [Sp_temp] KAKO ZAČNITE NASTAVITI ČRT. SELECT * iz dbo.temp; KONEC

Rezultat bo kot spodaj.

Ustvari postopek shranjevanja

Stara metoda: Pred uporabo strežnika SQL Server s spuščanjem, če zapusti objekte baze podatkov

Uporaba metode DROP IF EXISTS pred SQL Server 2016 je zahtevala pisanje dolge kode ovojnic stavkov IF.

Spustite tabelo, če obstaja

Predhodna metoda spuščanja mize je naslednja.

Če uporabljamo SQL Server 2015 ali starejšo različico, moramo zagnati naslednji kup kode.

Če (OBJECT_ID ('dbo.temp') Ni Null) Spustite temp tabele

Rezultat bo naslednji.

Spuščanje mize

Zdaj je njegova sintaksa precej zmedena, zato, če vam ni všeč in uporabljate SQL Server 2016 ali novejšo različico, lahko namesto velikih ovojnic uporabite preprost stavek DROP IF EXIST.

Spustite postopek shranjevanja, če obstaja:

Če želite izpustiti postopek, moramo napisati pogojni stavek, da preverimo, ali postopek shranjevanja obstaja ali ne, nato pa napisati izpust. V nasprotnem primeru bo prišlo do napake, če shranjeni postopek ne obstaja.

Zdaj izvedite naslednje stavke, da spustite postopek v različicah, ki so nižje od SQL Server 2016.

ČE OBSTAJA (IZBERITE 1 IZ sys.procedures WHERE Name = 'sp_temp') POSTOPEK SPADA dbo.sp_temp

Izhod bo takšen.

Postopek spustite z uporabo stare metode if ovojnice if

Spustite bazo podatkov, če obstaja:

Če uporabljate prejšnje različice strežnika SQL Server, morate za spustitev baze podatkov izvesti naslednjo kodo.

ČE DB_ID ('appuals') NI NULL ZAČETEK PADA BAZE PODATKOV appuals END

Rezultat bo naslednji.

Spustite bazo podatkov s staro metodo

Nova metoda: DROP IF EXISTS, podprt v različici SQL Server 2016 in novejših

Če želite spustiti predmet zbirke podatkov v SQL Server 2016 in novejših, moramo izvesti preprost stavek.

Spustite tabelo, če obstaja:

V SQL Server 2016 lahko napišemo izjavo, kot spodaj, da odstranimo shranjeno tabelo, če ta obstaja.

TAPELA ZA PADANJE, ČE OBSTAJA dbo.temp

Izhod bo takšen.

Spustite tabelo z novo metodo

Postopek spuščanja, če obstaja:

Zdaj bomo shranili shranjeni postopek, ki smo ga ustvarili na začetku članka, tako da smo izvedli naslednjo kodo.

POSTOPEK SPADA, ČE OBSTAJA dbo.sp_temp

Rezultat bo kot spodaj.

Spustite tabelo z novo metodo

Kar zadeva skladnjo, je ta preprost stavek lahko razumljiv in si ga je enostavno zapomniti. Podobno lahko sledimo istemu postopku, da spustimo druge predmete baze podatkov.

Spustite bazo podatkov, če obstaja:

Izvedite naslednjo kodo, če želite spustiti bazo podatkov s preverjanjem, če obstaja

UPORABITE MASTER GO DROP DATABASE, ČE OBSTAJA appuals

Rezultat bo kot spodaj.

Spustite bazo podatkov z novo metodo

Prednost uporabe te metode je, da če baza podatkov ne obstaja, ne bo povzročila nobene napake, se bo še naprej izvajal naslednji stavek v paketu. Poskusimo znova spustiti že spuščeno bazo podatkov.

Napaka se pojavi med ponovnim spuščanjem že izpuščene baze podatkov.

Podobno lahko iz baze podatkov spustimo indekse, poglede, zaporedja, sklope itd.

3 minute branja