Hogyan használható a DROP IF EXISTS az SQL Serverben?



Próbálja Ki A Műszerünket A Problémák Kiküszöbölésére

Ez a cikk a „CSEPP, HA LÉTEZIK” utasítás áll rendelkezésre az SQL Server 2016 és újabb verzióiban. „HA KILÉPJE” a legújabb opcionális záradék, amely az SQL Server 2016 és újabb verzióiban a meglévő DROP utasításba került. Lényegében a „CSEPP, HA LÉTEZIK” Az opció akkor használható, ha ellenőrizni kell, hogy egy entitás marad-e az adatbázisban, mielőtt létrehozza vagy eldobja. Ebben az esetben először eldobjuk a meglévő adatbázis objektumot, majd szükség esetén módosításokkal újrateremtjük.



Így megakadályozza a régi írási módot, ha feltétel, és az if feltétel belsejében írjon egy nyilatkozatot, hogy tesztelje az objektum jelenlétét annak eldobására. Ha nem fordul elő, a köteg következő utasítását továbbra is végrehajtjuk. De ha megpróbálunk eldobni egy objektumot, amely nem létezik, akkor hibaüzenetet jelenít meg, az alábbiak szerint.



Hajtsa végre a következő lekérdezést.



dobótábla dbo.cég

A kimenet ilyen lesz.

A hiba a nem létező adatbázis-objektum eldobása közben merül fel

Szintaxis

„DROP object_type [HA LÉTEZIK] object_name”

Érvek

OBJECT_TYPE:



Az objektumtípus bárki lehet az adatbázisból, triggerből, összeállításból, szekvenciából, indexből, táblázatból, eljárásnézetből, függvényből stb.

HA LÉTEZIK:

Ez egy opcionális záradék, és ha megemlíti a DROP utasításban, akkor ellenőrzi az objektum létezését, ha létezik, akkor leesik, különben továbbra is a blokk következő utasítását hajtja végre, anélkül, hogy hibákat tenne.

Az új „DROP IF EXISTS” módszer bevezetésével az SQL Server 2016 fejlesztői rövid kódot írhatnak.

Először hozzon létre egy „appuals” nevű adatbázist.

Adatbázis létrehozása

Most létrehozunk egy eldobandó táblázatot a következő kód végrehajtásával.

Use [appuals] Go CREATE TABLE temp (id INT, név varchar (100)); MEGY

A kimenet a következő lesz.

Táblázat létrehozása

Ezután hozzon létre egy eldobandó áruházi eljárást a következő kód használatával.

HASZNÁLJA [appuals] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO LÉPÉS ELJÁRÁS létrehozása [dbo]. [Sp_temp] AS BEGIN SET NOOUNT ON; SELECT * a dbo.temp; VÉGE

A kimenet az alábbi lesz.

Store eljárás létrehozása

Régi módszer: Mielőtt az SQL Server használná a drop, ha kilép az adatbázis-objektumokról

Az SQL Server 2016 előtti DROP IF EXISTS metódus használatához hosszú IF utasítás-csomagoló kód írására volt szükség.

Dobd el a táblázatot, ha létezik

A táblázat eldobásának korábbi módszere a következő.

Ha az SQL Server 2015-et vagy korábbi verziót használjuk, akkor a következő kódcsomagot kell végrehajtanunk.

Ha (OBJECT_ID ('dbo.temp') nem üres) Dobd el a táblázat hőmérsékletét

A kimenet a következő lesz.

Az asztal ledobása

Most a szintaxisa meglehetősen zavaró, így ha nem tetszik, és SQL Server 2016 vagy újabb rendszert használ, akkor egyszerű burkolók helyett egyszerű DROP IF EXIST állítást használhat.

Dobási eljárás, ha létezik:

Az eljárás elvetéséhez feltételes utasítást kell írnunk annak ellenőrzésére, hogy létezik-e a store eljárás, vagy sem, majd meg kell írnunk a drop utasítást. Ellenkező esetben hibát vet fel, ha a tárolt eljárás nem létezik.

Most hajtsa végre a következő utasításokat az eljárás elvetéséhez az SQL Server 2016-nál alacsonyabb verziókban.

HA LÉTEZIK (Válasszon 1-et a sys.procedures-ból WHERE Név = 'sp_temp') DROP PROCEDURE dbo.sp_temp

A kimenet ilyen lesz.

Dobja el az eljárást a régi burkoló kód metódusának használatával

Dobja az adatbázist, ha létezik:

Ha az SQL Server korábbi verzióit használja, akkor az adatbázis elvetéséhez a következő kódot kell végrehajtania.

HA A DB_ID ('appuals') NINL BEGIN BEGIN DROP DATABASE alkalmazás vége

A kimenet a következő lesz.

Dobja el az adatbázist egy régi módszer használatával

Új módszer: DROP IF EXISTS támogatott az SQL Server 2016 és újabb verzióiban

Adatbázisobjektum eldobásához az SQL Server 2016 és újabb rendszereken egy egyszerű utasítást kell végrehajtanunk.

Dobd el a táblázatot, ha létezik:

Írhatunk egy nyilatkozatot az alábbiak szerint az SQL Server 2016-ban, hogy távolítsunk el egy tárolt táblázatot, ha van ilyen.

DROP TABLE, HA LÉTEZIK dbo.temp

A kimenet ilyen lesz.

Dobja a táblázatot az új módszer használatával

Dobási eljárás, ha létezik:

Most a következő kód végrehajtásával elvetjük a cikk elején létrehozott tárolt eljárást.

DROP ELJÁRÁS HA LÉTEZIK dbo.sp_temp

A kimenet az alábbi lesz.

Dobja a táblázatot az új módszer használatával

Ami a szintaxist illeti, ez az egyszerű állítás könnyen érthető és könnyen megjegyezhető. Hasonlóképpen, ugyanezt az eljárást követhetjük el más adatbázis-objektumok eldobására is.

Dobja az adatbázist, ha létezik:

Hajtsa végre a következő kódot, ha el akarja dobni az adatbázist, ha létezik, akkor ellenőrizze

HASZNÁLJON MASTER GO DROP DATABASE -T, HOGY LÉTEZIK az alkalmi alkalmazásokat

A kimenet az alábbi lesz.

Dobja el az adatbázist az új módszer használatával

A módszer használatának előnye, hogy ha az adatbázis nem létezik, akkor az nem okoz hibát, a köteg következő utasítását továbbra is végrehajtják. Próbáljuk meg újra leadni a már ledobott adatbázist.

A hiba a már ledobott adatbázis újbóli eldobása közben merül fel.

Hasonlóképpen, indexeket, nézeteket, szekvenciákat, összeállításokat stb. Eldobhatunk az adatbázisból.

3 perc olvasás