Wie verwende ich DROP IF EXISTS in SQL Server?
Dieser Artikel beschreibt die "TROPFEN, WENN EXISTIERT" -Anweisung, die in SQL Server 2016 und höheren Versionen verfügbar ist. "WENN EXITS" ist die neueste optionale Klausel, die in der vorhandenen DROP-Anweisung in SQL Server 2016 und späteren Versionen hinzugefügt wurde. Im Wesentlichen die „DROP, WENN EXISTIERT“ Die Option wird verwendet, wenn überprüft werden muss, ob eine Entität in einer Datenbank verbleibt, bevor sie erstellt oder gelöscht wird. In diesem Fall löschen wir zunächst das vorhandene Datenbankobjekt und erstellen es dann ggf. mit Änderungen neu.
Somit wird verhindert, dass die alte Schreibweise von if-Bedingungen und innerhalb der if-Bedingung eine Anweisung geschrieben wird, um die Anwesenheit des Objekts zu testen, um es zu löschen. Wenn dies nicht der Fall ist, wird die nächste Anweisung im Stapel weiterhin ausgeführt. Wenn wir jedoch versuchen, ein nicht vorhandenes Objekt zu löschen, wird eine Fehlermeldung ausgegeben, wie unten gezeigt.
Führen Sie die folgende Abfrage aus.
drop table dbo.company
Die Ausgabe wird so sein.
Syntax
"DROP Objekttyp [ WENN EXISTS ] Objektname"
Argumente
OBJEKTTYP:
Der Objekttyp kann ein beliebiger Objekt aus der Datenbank, dem Trigger, der Assembly, der Sequenz, dem Index, der Tabelle, der Prozeduransicht, der Funktion usw. sein.
WENN EXISTIERT:
Es handelt sich um eine optionale Klausel. Wenn sie in der DROP-Anweisung erwähnt wird, überprüft sie die Existenz des Objekts. Wenn sie vorhanden ist, wird sie gelöscht. Andernfalls wird die nächste Anweisung im Block ohne Fehler weiter ausgeführt.
Mit der Einführung der neuen Methode „DROP IF EXISTS“ in SQL Server 2016 können Entwickler nun kurzen Code schreiben.
Erstellen Sie zunächst eine Datenbank mit dem Namen "appuals".
Jetzt erstellen wir eine Tabelle, die durch Ausführen des folgenden Codes gelöscht werden soll.
benutze [appuals] Go CREATE TABLE temp (id INT, name varchar (100)); GEHEN
Die Ausgabe wird wie folgt sein.
Erstellen Sie außerdem eine Speicherprozedur, die mit dem folgenden Code gelöscht werden soll.
USE [appuals] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO Create PROCEDURE [dbo]. [Sp_temp] AS BEGIN SET NOCOUNT ON; WÄHLEN * von dbo.temp; ENDE
Die Ausgabe erfolgt wie folgt.
Alte Methode: Vor SQL Server mit Drop if Exits auf Datenbankobjekten
Für die Verwendung der DROP IF EXISTS-Methode vor SQL Server 2016 musste langwieriger IF-Anweisungs-Wrapper-Code geschrieben werden.
Tabelle löschen, falls vorhanden
Das vorherige Verfahren zum Löschen einer Tabelle ist wie folgt.
Wenn Sie SQL Server 2015 oder früher verwenden, müssen Sie den folgenden Code ausführen.
Wenn (OBJECT_ID ('dbo.temp') nicht Null ist) Drop Table temp
Die Ausgabe wird wie folgt sein.
Jetzt ist die Syntax ziemlich verwirrend. Wenn Sie sie nicht mögen und SQL Server 2016 oder höher verwenden, können Sie anstelle großer Wrapper eine einfache DROP IF EXIST-Anweisung verwenden.
Drop-Store-Prozedur, falls vorhanden:
Um die Prozedur zu löschen, müssen wir eine bedingte Anweisung schreiben, um zu überprüfen, ob die Store-Prozedur existiert oder nicht, und dann die drop-Anweisung schreiben. Andernfalls wird ein Fehler ausgegeben, falls die gespeicherte Prozedur nicht vorhanden ist.
Führen Sie nun die folgenden Anweisungen aus, um die Prozedur in Versionen zu löschen, die niedriger als SQL Server 2016 sind.
WENN EXISTIERT (SELECT 1 FROM sys.procedures WHERE Name = 'sp_temp') DROP PROCEDURE dbo.sp_temp
Die Ausgabe wird so sein.
Datenbank löschen, falls vorhanden:
Wenn Sie frühere Versionen von SQL Server verwenden, müssen Sie den folgenden Code ausführen, um die Datenbank zu löschen.
WENN DB_ID ('appuals') NICHT NULL IST, BEGIN DROP DATABASE appuals END
Die Ausgabe wird wie folgt sein.
Neue Methode: DROP IF EXISTS wird in SQL Server 2016 und höher unterstützt
Um ein Datenbankobjekt in SQL Server 2016 und höher zu löschen, müssen Sie eine einfache Anweisung ausführen.
Tabelle löschen, falls vorhanden:
Wir können eine Anweisung wie folgt in SQL Server 2016 schreiben, um eine gespeicherte Tabelle zu entfernen, falls vorhanden.
DROP TABLE WENN EXISTIERT dbo.temp
Die Ausgabe wird so sein.
Löschverfahren, falls vorhanden:
Jetzt löschen wir die gespeicherte Prozedur, die wir zu Beginn des Artikels erstellt haben, indem wir den folgenden Code ausführen.
TROPFENVERFAHREN, WENN EXISTIERT dbo.sp_temp
Die Ausgabe erfolgt wie folgt.
In Bezug auf die Syntax ist diese einfache Aussage leicht zu verstehen und leicht zu merken. Ebenso können wir das gleiche Verfahren anwenden, um andere Datenbankobjekte zu löschen.
Datenbank löschen, falls vorhanden:
Führen Sie den folgenden Code aus, wenn Sie die Datenbank löschen möchten, indem Sie die Prüfung "Wenn vorhanden" verwenden
BENUTZEN SIE DIE MASTER GO DROP-DATENBANK, WENN es Appuals gibt
Die Ausgabe erfolgt wie folgt.
Der Vorteil dieser Methode besteht darin, dass die nächste Anweisung im Stapel weiterhin ausgeführt wird, wenn die Datenbank nicht vorhanden ist und keinen Fehler verursacht. Versuchen wir, die bereits gelöschte Datenbank erneut zu löschen.
Ebenso können wir Indizes, Ansichten, Sequenzen, Assemblys usw. aus der Datenbank löschen.