Jak używać funkcji DROP IF EXISTS w programie SQL Server?



Wypróbuj Nasz Instrument Do Eliminowania Problemów

W tym artykule omówiono „UPUŚĆ, JEŚLI ISTNIEJE” instrukcja dostępna w SQL Server 2016 i nowszych wersjach. „IF EXITS” to najnowsza opcjonalna klauzula dodana do istniejącej instrukcji DROP w programie SQL Server 2016 i nowszych wersjach. Zasadniczo „UPUŚĆ, JEŚLI ISTNIEJE” Opcja jest używana, gdy konieczne jest sprawdzenie, czy jednostka pozostaje w bazie danych przed jej utworzeniem lub usunięciem. W takim przypadku najpierw usuniemy istniejący obiekt bazy danych, a następnie ponownie utworzymy go ze zmianami, jeśli będzie to wymagane.



W ten sposób zapobiega pisaniu w starym sposobie pisania warunku if i wewnątrz warunku if, który zapisuje instrukcję w celu przetestowania obecności obiektu i usunięcia go. Jeśli tak się nie stanie, następna instrukcja w partii będzie nadal wykonywana. Ale jeśli spróbujemy upuścić obiekt, który nie istnieje, spowoduje to wyświetlenie komunikatu o błędzie, jak pokazano poniżej.



Wykonaj następujące zapytanie.



drop table dbo.company

Wynik będzie taki.

Błąd pojawia się podczas usuwania nieistniejącego obiektu bazy danych

Składnia

„DROP typ_obiektu [JEŚLI ISTNIEJE] nazwa_obiektu”

Argumenty

RODZAJ OBIEKTU:



Typ obiektu może być dowolny z bazy danych, wyzwalacza, zestawu, sekwencji, indeksu, tabeli, widoku procedury, funkcji itp.

JEŚLI ISTNIEJE:

Jest to klauzula opcjonalna i jeśli jest wymieniona w instrukcji DROP, sprawdzi istnienie obiektu, jeśli istnieje, zostanie usunięta, w przeciwnym razie będzie kontynuowała wykonywanie następnej instrukcji w bloku bez powodowania żadnych błędów.

Teraz dzięki wprowadzeniu nowej metody „DROP IF EXISTS” w SQL Server 2016 programiści mogą pisać krótki kod.

Najpierw utwórz bazę danych o nazwie „appuals”.

Tworzenie bazy danych

Teraz utworzymy tabelę do usunięcia, wykonując następujący kod.

użyj [appuals] Idź CREATE TABLE temp (id INT, nazwa varchar (100)); IŚĆ

Dane wyjściowe będą następujące.

Tworzenie tabeli

Ponadto utwórz procedurę magazynu do usunięcia przy użyciu następującego kodu.

UŻYJ [appuals] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO Utwórz PROCEDURĘ [dbo]. [Sp_temp] JAK BEGIN USTAWIĆ NOCOUNT ON; SELECT * z dbo.temp; KONIEC

Wynik będzie taki, jak poniżej.

Tworzenie procedury sklepu

Stara metoda: przed SQL Server przy użyciu drop if Exits na obiektach bazy danych

Użycie metody DROP IF EXISTS przed SQL Server 2016 wymagało napisania długiego kodu opakowań instrukcji IF.

Usuń tabelę, jeśli istnieje

Wcześniejsza metoda usuwania tabeli jest następująca.

Jeśli używamy SQL Server 2015 lub wcześniejszego, musimy wykonać następujący kod.

Jeśli (OBJECT_ID ('dbo.temp') nie jest zerowe) Drop Table temp

Dane wyjściowe będą następujące.

Upuszczenie stołu

Teraz jego składnia jest dość zagmatwana, więc jeśli ci się nie podoba i używasz SQL Server 2016 lub nowszego, możesz wybrać prostą instrukcję DROP IF EXIST zamiast dużych opakowań.

Procedura zrzutu sklepu, jeśli istnieje:

Aby usunąć procedurę, musimy napisać instrukcję warunkową, aby sprawdzić, czy procedura przechowywania istnieje, czy nie, a następnie napisać instrukcję drop. W przeciwnym razie zgłosi błąd, jeśli procedura składowana nie istnieje.

Teraz wykonaj następujące instrukcje, aby usunąć procedurę w wersjach starszych niż SQL Server 2016.

JEŚLI ISTNIEJE (WYBIERZ 1 FROM sys.procedures WHERE Name = 'sp_temp') DROP PROCEDURE dbo.sp_temp

Wynik będzie taki.

Porzuć procedurę przy użyciu starej metody kodu opakowania if

Usuń bazę danych, jeśli istnieje:

Jeśli używasz poprzednich wersji programu SQL Server, musisz wykonać następujący kod, aby usunąć bazę danych.

JEŚLI DB_ID ('appuals') NIE JEST NULL BEGIN DROP DATABASE appuals END

Dane wyjściowe będą następujące.

Usuń bazę danych przy użyciu starej metody

Nowa metoda: DROP IF EXISTS obsługiwana w SQL Server 2016 i nowszych wersjach

Aby usunąć obiekt bazy danych w SQL Server 2016 i nowszych, musimy wykonać prostą instrukcję.

Drop table, jeśli istnieje:

Możemy napisać instrukcję jak poniżej w SQL Server 2016, aby usunąć przechowywaną tabelę, jeśli istnieje.

DROP TABLE, JEŚLI ISTNIEJE dbo.temp

Wynik będzie taki.

Usuń tabelę przy użyciu nowej metody

Procedura usuwania, jeśli istnieje:

Teraz usuniemy procedurę składowaną, którą utworzyliśmy na początku artykułu, wykonując następujący kod.

PROCEDURA UPUSZCZANIA, JEŚLI ISTNIEJE dbo.sp_temp

Wynik będzie taki, jak poniżej.

Usuń tabelę przy użyciu nowej metody

Jeśli chodzi o składnię, to proste stwierdzenie jest łatwe do zrozumienia i łatwe do zapamiętania. Podobnie możemy wykonać tę samą procedurę, aby usunąć inne obiekty bazy danych.

Usuń bazę danych, jeśli istnieje:

Wykonaj następujący kod, jeśli chcesz usunąć bazę danych przy użyciu funkcji sprawdzania, jeśli istnieje

UŻYJ BAZY DANYCH MASTER GO DROP, JEŚLI ISTNIEJE

Wynik będzie taki, jak poniżej.

Usuń bazę danych przy użyciu nowej metody

Zaletą korzystania z tej metody jest to, że jeśli baza danych nie istnieje, nie spowoduje to żadnego błędu, a następna instrukcja w partii będzie nadal wykonywana. Spróbujmy ponownie usunąć już usuniętą bazę danych.

Błąd pojawia się podczas ponownego usuwania już usuniętej bazy danych.

Podobnie możemy usuwać indeksy, widoki, sekwencje, zestawy itp. Z bazy danych.

3 minuty czytania