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