DROP ... IF EXISTS
Ab SQL Server 2016 gibt es einige schöne Möglichkeiten Skripte etwas fehlertoleranter zu schreiben.
Sowohl bei der Entfernung von Spalten, als auch bei der Löschung von Tabellen können wir jetzt angeben, dass diese Aktion nur durchgeführt werden soll, wenn das Ziel-Objekt auch existiert!
Als erstes legen wir uns mal eine Tabelle an, die zu Anfang drei Spalten haben soll. Ein Select auf die leere Tabelle zeigt uns schon mal die vorhandenen Spalten.
USE tempdb
GO
-- Ab SQL Server 2016
CREATE TABLE dbo.TestDrop (Col1 INT, Col2 INT, Col3 INT);
GO
SELECT *
FROM dbo.TestDrop;
col1 | col2 | col3 |
---|
Jetzt möchten wir gerne wieder einige Spalten entfernen. Die Spalte col2 soll auf jeden Fall vorhanden sein, damit dieses Statement funktioniert. Die beiden anderen Spalten (Col3, Col4) werden auch gedropped, aber nur wenn sie vorhanden sind. Falls sie nicht vorhanden sind, gibt es auch keinen Fehler. Ein Select auf die leere Tabelle zeigt uns dann die jetzt noch vorhandenen Spalten.
-- Wir droppen ein paar Spalten. Nicht alle gibt es wirklich!
ALTER TABLE dbo.TestDrop DROP COLUMN Col2, COLUMN IF EXISTS Col3, COLUMN IF EXISTS Col4;
SELECT *
FROM dbo.TestDrop;
col1 |
---|
Ganz am Ende räumen wir wieder auf und löschen die Tabelle, aber nur wenn sie vorhanden ist!
-- Auch hier kann man ein IF EXISTS verwenden um Fehler abzufangen
DROP TABLE IF EXISTS dbo.TestDrop;
Wie man sieht ist es gar nicht so schwer einzelne oder mehrere Spalten aus einer Tabelle zu entfernen, ganz egal, ob sie vorhanden sind oder nicht!
Print article | This entry was posted by cmu on 14.03.18 at 14:34:00 . Follow any responses to this post through RSS 2.0. |