Jak používat DROP IF EXISTS na serveru SQL Server?



Vyzkoušejte Náš Nástroj Pro Odstranění Problémů

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 stávají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 psaní podmínky if a uvnitř podmínky if psaní příkazu k otestování přítomnosti objektu, aby byl zrušen. Pokud k tomu nedojde, 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ý.

Došlo k chybě při přetažení databázového objektu, který neexistuje

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, bude 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 prostředí SQL Server 2016 mohou vývojáři psát stručný kód.

Nejprve vytvořte databázi s názvem „appuals“.

Vytvoření databáze

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

Vytváření tabulek

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.

Uložení vytvoření procedury

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

Pustit stůl

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ů přejít na 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šte proceduru pomocí staré metody kódu if wrapper

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, aby se databáze vypustila.

IF DB_ID ('appuals') IS NOT NULL BEGIN DROP DATABASE appuals END

Výstup bude následující.

Zrušte databázi pomocí staré metody

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.

TABULKA DROP POKUD EXISTUJE dbo.temp

Výstup bude takový.

Zrušte tabulku pomocí nové metody

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.

Zrušte tabulku pomocí nové metody

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.

Zrušte databázi pomocí nové metody

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 nadále provádět. Zkusme přetáhnout již vyřazenou databázi.

Došlo k chybě při opětovném přetažení již vyřazené databáze.

Podobně můžeme z databáze vypustit indexy, pohledy, sekvence, sestavy atd.

3 minuty čtení