Jak používat DROP IF EXISTS na serveru SQL Server?
Tento článek pojednává o „DROP IF EXISTS“ prohlášení dostupné v SQL Server 2016 a novějších verzích. „IF EXITS“ je nejnovější volitelná klauzule přidaná do existujícího příkazu DROP v SQL Server 2016 a novějších verzích. V zásadě „DROP IF EXISTS“ možnost se používá, když je nutné zkontrolovat, zda entita zůstává v databázi před jejím vytvořením nebo zrušením. V tomto případě nejprve zrušíme existující databázový objekt a poté jej v případě potřeby znovu vytvoříme se změnami.
Zabraňuje tedy starému způsobu zápisu podmínky if a uvnitř podmínky if psaní příkazu k otestování přítomnosti objektu, aby byl zrušen. Pokud se tak nestane, bude se pokračovat v provádění dalšího příkazu v dávce. Pokud se však pokusíme odhodit objekt, který neexistuje, vyvolá chybovou zprávu, jak je uvedeno níže.
Proveďte následující dotaz.
drop tabulka dbo.firma
Výstup bude takový.
Syntax
„DROP object_type [IF EXISTS] object_name“
Argumenty
OBJECT_TYPE:
Typ objektu může být kdokoli z databáze, spouštěče, sestavení, sekvence, indexu, tabulky, zobrazení procedury, funkce atd.
POKUD EXISTUJE:
Jedná se o volitelnou klauzuli, a pokud je uvedena v příkazu DROP, zkontroluje existenci objektu, pokud existuje, dojde k jeho zrušení, jinak bude pokračovat v provádění dalšího příkazu v bloku, aniž by došlo k chybám.
Nyní se zavedením nové metody „DROP IF EXISTS“ v systému SQL Server 2016 mohou vývojáři psát stručný kód.
Nejprve vytvořte databázi s názvem „appuals“.
Nyní vytvoříme tabulku, která má být zrušena spuštěním následujícího kódu.
use [appuals] Go CREATE TABLE temp (id INT, name varchar (100)); JÍT
Výstup bude následující.
Dále vytvořte proceduru ukládání, která má být zrušena, pomocí následujícího kódu.
USE [appuals] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO Create PROCEDURE [dbo]. [Sp_temp] AS BEGIN SET NOCOUNT ON; SELECT * z dbo.temp; KONEC
Výstup bude uveden níže.
Stará metoda: Před použitím serveru SQL Server, pokud dojde k ukončení databázových objektů
Použití metody DROP IF EXISTS před SQL Serverem 2016 vyžadovalo psaní dlouhého kódu obtékání příkazu IF.
Zrušení tabulky, pokud existuje
Předchozí způsob upuštění od tabulky je následující.
Pokud používáme SQL Server 2015 nebo starší, musíme provést následující část kódu.
If (OBJECT_ID ('dbo.temp') is not Null) Drop Table temp
Výstup bude následující.
Nyní je jeho syntaxe docela matoucí, takže pokud se vám nelíbí a používáte SQL Server 2016 nebo vyšší, můžete místo velkých obalů použít jednoduchý příkaz DROP IF EXIST.
Postup uložení úložiště, pokud existuje:
Chcete-li proceduru zrušit, musíme napsat podmíněný příkaz, abychom zkontrolovali, zda procedura úložiště existuje, či nikoli, a pak napsat příkaz drop. Jinak vyvolá chybu v případě, že uložená procedura neexistuje.
Nyní proveďte následující příkazy a zrušte postup ve verzích nižších než SQL Server 2016.
IF EXISTS (SELECT 1 FROM sys.procedures WHERE Name = 'sp_temp') DROP PROCEDURE dbo.sp_temp
Výstup bude takový.
Zrušení databáze, pokud existuje:
Pokud používáte předchozí verze serveru SQL Server, je třeba spustit následující kód, který databázi zahodí.
IF DB_ID ('appuals') IS NOT NULL BEGIN DROP DATABASE appuals END
Výstup bude následující.
Nová metoda: DROP IF EXISTS podporovaný ve verzi SQL Server 2016 a vyšší
Chcete-li zrušit databázový objekt na serveru SQL Server 2016 a novějším, musíme provést jednoduchý příkaz.
Zrušení tabulky, pokud existuje:
Můžeme napsat příkaz, jak je uvedeno níže v SQL Server 2016, abychom odstranili uloženou tabulku, pokud existuje.
DROP TABULKA, POKUD EXISTUJE dbo.temp
Výstup bude takový.
Postup přetažení, pokud existuje:
Nyní zrušíme uloženou proceduru, kterou jsme vytvořili na začátku článku, spuštěním následujícího kódu.
POSTUP DROP POKUD EXISTUJE dbo.sp_temp
Výstup bude uveden níže.
Pokud jde o syntaxi, je tento jednoduchý příkaz snadno srozumitelný a snadno zapamatovatelný. Podobně můžeme postupovat stejným způsobem i při upuštění dalších databázových objektů.
Zrušení databáze, pokud existuje:
Chcete-li zrušit databázi pomocí kontroly, pokud existuje, proveďte následující kód
POUŽÍVEJTE MASTER GO DROP DATABASE IF EXISTS appuals
Výstup bude uveden níže.
Výhodou použití této metody je, že pokud databáze neexistuje, nezpůsobí žádnou chybu, další příkaz v dávce se bude i nadále provádět. Zkusme znovu zrušit již vyřazenou databázi.
Podobně můžeme z databáze vypustit indexy, pohledy, sekvence, sestavy atd.