Kako uporabiti DROP, ČE OBSTAJA v SQL Serverju?

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 stari način pisanja if pogoja in znotraj if pogoja pisanje izjave za preizkus prisotnosti predmeta, da jo spusti. Č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.

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

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.

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.

Stara metoda: Pred uporabo strežnika SQL s padcem, če zapusti objekte baze podatkov

Uporaba metode DROP IF EXISTS pred SQL Server 2016 je zahtevala pisanje daljše kode ovojnic 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.

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 opustiti postopek, moramo napisati pogojni stavek, da preverimo, ali postopek shranjevanja obstaja ali ne, nato pa napisati izpis. 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.

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 DROP DATABASE appuals END

Rezultat bo naslednji.

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

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

Spustite tabelo, če obstaja:

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

TAPELA ZA PADANJE, ČE OBSTAJA dbo.temp

Izhod bo takšen.

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.

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.

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 izpuščeno bazo podatkov.

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


$config[zx-auto] not found$config[zx-overlay] not found