Wie verwende ich DROP IF EXISTS in SQL Server?
Somit wird verhindert, dass die alte Schreibweise der if-Bedingung und innerhalb der if-Bedingung eine Anweisung geschrieben wird, um die Anwesenheit des Objekts zu testen und 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 angezeigt, wie unten gezeigt.
Führen Sie die folgende Abfrage aus.
drop table dbo.company
Die Ausgabe wird so sein.
Syntax
“DROP object_type [ IF EXISTS ] object_name”
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.
use [appuals] Go CREATE TABLE temp ( id INT, name varchar(100) ); GO
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; SELECT * from dbo.temp; END
Die Ausgabe erfolgt wie folgt.
Alte Methode: Bevor SQL Server drop verwendet, wenn Datenbankobjekte beendet werden
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.
If(OBJECT_ID('dbo.temp') Is Not Null) 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 Speicherprozedur vorhanden ist 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.
IF EXISTS(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.
IF DB_ID('appuals') IS NOT NULL 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 in SQL Server 2016 eine Anweisung wie folgt schreiben, um eine gespeicherte Tabelle zu entfernen, falls vorhanden.
DROP TABLE IF EXISTS 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.
DROP PROCEDURE IF EXISTS 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
USE MASTER GO DROP DATABASE IF EXISTS appuals
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.