Ako používať DROP IF EXISTS na serveri SQL Server?
Tento článok pojednáva o „DROP IF EXISTS“ vyhlásenie dostupné v SQL Server 2016 a novších verziách. „AK EXIT“ je najnovšia voliteľná klauzula pridaná do existujúceho príkazu DROP v serveri SQL Server 2016 a novších verziách. V podstate „DROP IF EXISTS“ voľba sa používa, keď je potrebné skontrolovať, či entita zostáva v databáze pred jej vytvorením alebo zrušením. V takom prípade najskôr zrušíme existujúci databázový objekt a potom ho v prípade potreby znova vytvoríme so zmenami.
Zabráni teda starému spôsobu zápisu podmienky if a vo vnútri podmienky if písania príkazu na otestovanie prítomnosti objektu, aby sa tento obsah odhodil. Ak sa tak nestane, bude sa pokračovať v vykonávaní ďalšieho príkazu v dávke. Ale ak sa pokúsime odhodiť objekt, ktorý neexistuje, zobrazí sa chybové hlásenie, ako je uvedené nižšie.
Vykonajte nasledujúci dotaz.
rozbaľovací stôl dbo.spoločnosť
Výstup bude taký.
Syntax
„DROP object_type [IF EXISTS] object_name“
Argumenty
OBJECT_TYPE:
Typ objektu môže byť ktokoľvek z databázy, spúšťača, zostavy, sekvencie, indexu, tabuľky, zobrazenia procedúry, funkcie atď.
AK EXISTUJE:
Je to voliteľná klauzula, a ak je uvedená vo vyhlásení DROP, skontroluje existenciu objektu, ak existuje, zruší sa, inak bude pokračovať v vykonávaní ďalšieho príkazu v bloku bez vytvárania akýchkoľvek chýb.
Teraz so zavedením novej metódy „DROP IF EXISTS“ v serveri SQL Server 2016 môžu vývojári písať stručný kód.
Najskôr vytvorte databázu s názvom „appuals“.
Teraz vytvoríme tabuľku, ktorá sa má zahodiť, vykonaním nasledujúceho kódu.
use [appuals] Go CREATE TABLE temp (id INT, name varchar (100)); Choď
Výstup bude nasledovný.
Ďalej vytvorte procedúru ukladania, ktorá sa má zrušiť, pomocou nasledujúceho kódu.
POUŽITIE [appuals] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO Vytvorenie POSTUPU [dbo]. [Sp_temp] AKO ZAČAŤ ZOSTÁVAŤ NOCOUNT ON; SELECT * z dbo.temp; KONIEC
Výstup bude uvedený nižšie.
Stará metóda: Predtým, ako SQL Server použije drop, ak existuje na databázových objektoch
Použitie metódy DROP IF EXISTS pred SQL Serverom 2016 vyžadovalo napísanie zdĺhavého kódu wrapperov príkazov IF.
Vypustiť tabuľku, ak existuje
Predchádzajúca metóda zrušenia tabuľky je nasledovná.
Ak používame server SQL Server 2015 alebo starší, musíme vykonať nasledujúcu časť kódu.
Ak (OBJECT_ID ('dbo.temp') nie je null), zrušte tepl. Tabuľky
Výstup bude nasledovný.
Teraz je jeho syntax dosť mätúca, takže ak sa vám nepáči a používate SQL Server 2016 alebo novší, môžete namiesto veľkých obalov použiť jednoduchý príkaz DROP IF EXIST.
Postup ukladania, ak existuje:
Aby sme procedúru zrušili, musíme napísať podmienený príkaz, aby sme skontrolovali, či procedúra ukladania existuje alebo nie, a potom napísať príkaz drop. V opačnom prípade vyvolá chybu v prípade, že uložená procedúra neexistuje.
Teraz vykonaním nasledujúcich príkazov zrušte postup vo verziách nižších ako SQL Server 2016.
AK EXISTUJE (VYBERTE 1 ZO sys.procesov KDE Názov = 'sp_temp') POSTUP DROP dbo.sp_temp
Výstup bude taký.
Vypustiť databázu, ak existuje:
Ak používate predchádzajúce verzie servera SQL Server, musíte spustiť nasledujúci kód, aby ste spustili databázu.
AK DB_ID ('appuals') NIE JE NULL ZAČNITE DROP DATABÁZU appuals END
Výstup bude nasledovný.
Nová metóda: DROP IF EXISTS podporovaný vo verzii SQL Server 2016 a vyššej
Ak chcete zrušiť databázový objekt na serveri SQL Server 2016 a novších, musíme vykonať jednoduchý príkaz.
Vypustiť tabuľku, ak existuje:
Môžeme napísať vyhlásenie, ako je uvedené nižšie, v serveri SQL Server 2016, aby sme odstránili uloženú tabuľku, ak existuje.
TABUĽKA DROP AK EXISTUJE dbo.temp
Výstup bude taký.
Procedúra zrušenia, ak existuje:
Teraz zrušíme uloženú procedúru, ktorú sme vytvorili na začiatku článku, vykonaním nasledujúceho kódu.
POSTUP POKROKU, AK EXISTUJE dbo.sp_temp
Výstup bude uvedený nižšie.
Pokiaľ ide o syntax, tento jednoduchý príkaz je ľahko pochopiteľný a ľahko zapamätateľný. Rovnakým spôsobom môžeme postupovať aj pri vypúšťaní ďalších databázových objektov.
Vypustiť databázu, ak existuje:
Ak chcete zrušiť databázu pomocou kontroly existencie, vykonajte nasledujúci kód
POUŽÍVAJTE MASTER GO DROP DATABASE, AK EXISTUJÚ aplikácie
Výstup bude uvedený nižšie.
Výhodou použitia tejto metódy je, že ak databáza neexistuje, nespôsobí žiadnu chybu, ďalší príkaz v dávke sa bude naďalej vykonávať. Skúsme znova vyhodiť už zrušenú databázu.
Podobne môžeme z databázy vypustiť indexy, zobrazenia, sekvencie, zostavy atď.