SQL Server, wenn existiert Droptabelle

SQL Server, wenn existiert Droptabelle

Wie Sie wahrscheinlich bereits wissen, können Sie keine Tabelle in einer Datenbank erstellen, wenn eine Tabelle mit einem ähnlichen Namen in der Datenbank vorhanden ist. Um dies zu überwinden, können Sie prüfen, ob die Tabelle existiert, und falls die Tabelle ab und erstellen Sie eine neue Tabelle.

In diesem Artikel lernen Sie, wie Sie SQL -Bedingungen verwenden. Wir werden diskutieren, wie man überprüft, ob eine Tabelle existiert, und wenn sie wahr ist, lassen Sie sie fallen.

Anforderungen

Wir haben die Beispiele in einer SQL -Serverinstanz in diesem Handbuch getestet und implementiert. Wenn Sie eine ähnliche Umgebung reproduzieren möchten, stellen Sie sicher, dass Sie:

  1. Microsoft SQL Server 2019
  2. SQL Server Management Studio 18
  3. Ändern Sie die Berechtigungen in Ihrer Zieldatenbank

Sobald Sie die angegebenen Anforderungen oben haben, können wir mit dem Tutorial fortfahren.

Grundlagen

Bevor wir lernen, wie man eine bedingte Logik hinzufügt, bevor wir eine Tabelle fallen lassen, sehen wir, was passiert, wenn Sie versuchen, eine nicht existierende Tabelle in einer Datenbank fallen zu lassen.

Betrachten Sie die Beispielabfrage unten:

Salesdb verwenden;
Droptabelle do_not_exist;

Wenn wir versuchen, die obige Abfrage auszuführen, gibt SQL Server einen MSG 3701 -Fehler zurück:

Zustandslogik - Methode 1

Die erste Methode, die Sie verwenden können, wenn Sie eine Tabelle löschen müssen, wenn sie vorhanden ist. Diese Abfrage ist nur in der SQL Server -Version 2016 und höher verfügbar.

Die Syntax ist wie:

Droptabelle [falls existiert] db_name.Schema_Name.TBL_NAME;

Die Abfrage prüft, ob die Tabelle existiert, und lassen Sie sie, falls dies wahr sind, sie fallen; Ansonsten ignorieren Sie die Drop -Anweisung.

Zum Beispiel:

Salesdb verwenden;
Tisch fallen, wenn Mitarbeiter existiert;

Wenn die Tabelle vorhanden ist, versucht SQL, sie fallen zu lassen.

Denken Sie daran, dass SQL -Regeln für das Ablegen einer Tabelle noch gelten.

Methode 2 - Objekt -ID

Die zweite Methode besteht darin, die Funktion Object_id () zu verwenden. Die Funktion gibt eine Objekt -ID zurück, wenn der angegebene Name vorhanden ist.

Der folgende Beispielcode zeigt, wie Sie die Funktion Object_id () verwenden, um eine bedingte Logik beim Löschen einer Tabelle hinzuzufügen.

Salesdb verwenden;
Wenn object_id (n'dbo.Mitarbeiter ', n'u') ist nicht null
Droptabelle [DBO].Mitarbeiter;

In der folgenden Ressource erfahren Sie mehr über die Funktion Object_id ():

SQL Server Object_id () Funktionsdokumente.

Methode 3 - Informationsschema

Wir können auch das SQL Server -Informationsschema zum Abfragen verwenden, wenn eine Tabelle vorliegt. Eine Beispielabfrage ist wie unten gezeigt:

Salesdb verwenden;
Wenn existiert (
Wählen Sie * aus Information_Schema aus.Tabellen wobei table_name = 'Mitarbeiter' und table_schema = 'dbo'))
Droptabelle [DBO].[Mitarbeiter];

Im obigen Beispiel verwenden wir das Informationsschema, um zu überprüfen, ob eine bestimmte Tabelle vorhanden ist.

Schließen

Mit diesem Handbuch haben Sie verschiedene Möglichkeiten ermittelt, um eine bedingte Logik hinzuzufügen, wenn Sie eine Tabelle auf dem SQL -Server fallen lassen. Durch das Hinzufügen von bedingten Anweisungen können Sie Fehler in automatisierten SQL -Skripten verhindern.