Kako koristiti DROP AKO POSTOJI u SQL Server?



Isprobajte Naš Instrument Za Uklanjanje Problema

Ovaj članak govori o “KAPANJE AKO POSTOJI” izjava dostupna u SQL Server 2016 i novijim verzijama. 'AKO IZLAZI' je najnovija neobavezna klauzula dodana u postojeći DROP izraz u SQL Server 2016 i novijim verzijama. U osnovi, “KAPANJE AKO POSTOJI” opcija se koristi kada je potrebno provjeriti ostaje li entitet u bazi podataka prije nego što je stvoren ili ispušten. U ovom ćemo slučaju prvo ispustiti postojeći objekt baze podataka, a zatim ga po potrebi stvoriti s promjenama.



Dakle, sprječava stari način pisanja if uvjet i unutar if uvjeta pisanje izjave kako bi se testirala prisutnost objekta da bi se ispustio. Ako se to ne dogodi, sljedeći će se izraz u paketu i dalje izvršavati. Ali ako pokušamo ispustiti objekt koji ne postoji, pojavit će se poruka o pogrešci kao što je prikazano u nastavku.



Izvršite sljedeći upit.



pad tablice dbo.društvo

Izlaz će biti ovakav.

Pogreška nastaje tijekom ispuštanja objekta baze podataka koji ne postoji

Sintaksa

“DROP object_type [IF EXISTS] naziv_d objekta”

Argumenti

OBJECT_TYPE:



Vrsta objekta može biti bilo tko iz baze podataka, okidača, sklopa, sekvence, indeksa, tablice, prikaza postupka, funkcije itd.

AKO POSTOJI:

To je neobavezna klauzula i ako se spominje u izjavi DROP, provjerit će postojanje objekta, ako postoji, ispustit će se, u protivnom će nastaviti izvršavati sljedeću naredbu u bloku bez stvaranja grešaka.

Sada s uvođenjem nove metode “DROP IF EXISTS” u SQL Server 2016 programeri mogu pisati kratki kod.

Prvo stvorite bazu podataka pod nazivom 'appuals'.

Stvaranje baze podataka

Sada ćemo stvoriti tablicu koja će se ispustiti izvršavanjem sljedećeg koda.

koristite [appuals] Go CREATE TABLE temp (id INT, ime varchar (100)); IĆI

Izlaz će biti sljedeći.

Stvaranje tablice

Nadalje, stvorite postupak pohrane koji će se ispustiti pomoću sljedećeg koda.

KORISTITE [appuals] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO Stvorite POSTUPAK [dbo]. [Sp_temp] KAKO POČNETE SET NOCOUNT ON; ODABERITE * s dbo.temp; KRAJ

Izlaz će biti kao u nastavku.

Izrada postupka pohrane

Stara metoda: Prije SQL Servera koristeći drop ako izlazi na objektima baze podataka

Korištenje metode DROP IF EXISTS prije SQL Servera 2016 zahtijevalo je pisanje dugotrajnog koda omotača IF izraza.

Ispustite tablicu ako postoji

Prethodna metoda ispuštanja stola je kako slijedi.

Ako koristimo SQL Server 2015 ili stariju verziju, trebamo izvršiti sljedeću hrpu koda.

Ako (OBJECT_ID ('dbo.temp') nije null) Ispustite temp. Tablice

Izlaz će biti sljedeći.

Spuštanje stola

Sada je njegova sintaksa prilično zbunjujuća, pa ako vam se ne sviđa, a koristite SQL Server 2016 ili noviju verziju, umjesto velikih omota možete odabrati jednostavnu izjavu DROP IF EXIST.

Otpustite postupak spremanja ako postoji:

Da bismo odustali od postupka, moramo napisati uvjetnu izjavu kako bismo provjerili postoji li procedura spremanja ili ne, a zatim napisati iskaz za ispuštanje. U suprotnom, pojavit će se pogreška u slučaju da pohranjena procedura ne postoji.

Sada izvršite sljedeće izjave da biste odustali od postupka u verzijama nižim od SQL Server 2016.

AKO POSTOJI (ODABERITE 1 IZ sys.procedures WHERE Name = 'sp_temp') POSTUPAK PADANJA dbo.sp_temp

Izlaz će biti ovakav.

Ispustite postupak pomoću stare metode if omota ako

Ispustite bazu podataka ako postoji:

Ako koristite prethodne verzije SQL Servera, morate izvesti sljedeći kod za ispuštanje baze podataka.

AKO DB_ID ('appuals') NIJE NULL POČETAK DRAP BAZA PODATAKA appuals

Izlaz će biti sljedeći.

Ispustite bazu podataka pomoću stare metode

Nova metoda: DROP AKO POSTOJI podržano u verziji SQL Server 2016 i novijim

Da bismo ispustili objekt baze podataka u SQL Server 2016 i novijim verzijama, moramo izvršiti jednostavan izraz.

Ispustite tablicu ako postoji:

Izjavu kao u nastavku možemo napisati u SQL Server 2016 za uklanjanje pohranjene tablice ako postoji.

TAPELA ZA SPUSTANJE AKO POSTOJI dbo.temp

Izlaz će biti ovakav.

Otpustite tablicu novom metodom

Postupak ispuštanja ako postoji:

Sada ćemo ispustiti pohranjenu proceduru koju smo stvorili na početku članka izvršavanjem sljedećeg koda.

POSTUPAK KAPANJA AKO POSTOJI dbo.sp_temp

Izlaz će biti kao u nastavku.

Otpustite tablicu novom metodom

Što se tiče sintakse, ovu je jednostavnu izjavu lako razumjeti i lako je pamtiti. Slično tome, možemo slijediti isti postupak za ispuštanje drugih objekata baze podataka.

Ispustite bazu podataka ako postoji:

Izvršite sljedeći kod ako želite ispustiti bazu podataka provjerom ako postoji

KORISTITE MASTER GO DROP BAZU BAZA AKO POSTOJE appuali

Izlaz će biti kao u nastavku.

Ispustite bazu podataka novom metodom

Prednost korištenja ove metode je u tome što ako baza podataka ne postoji, neće uzrokovati grešku, sljedeći će se izraz u paketu i dalje izvršavati. Pokušajmo ponovno ispustiti već ispuštenu bazu podataka.

Pogreška nastaje tijekom ponovnog ispuštanja već ispuštene baze podataka.

Slično tome, iz baze podataka možemo ispuštati indekse, poglede, sekvence, sklopove itd.

3 minute čitanja