Oft sind Änderungen an einer Datenbank per Skript einzuspielen, wie sie auch mit dem SQL Server Management Studio
erzeugt werden. Dabei ist es hilfreich, das auf Wunsch vor dem Anlegen einer Tabelle überprüft wird, ob diese bereits vorhanden ist und somit ein entsprechender Fehler vermieden werden kann. Leider fehlt dieser Komfort beim Hinzufügen einer neuen Spalte mit dem Befehl ALTER TABLE ADD
, so dass es unweigerlich zu einem Fehler kommt, falls eine Spalte mit dem gewünschten Namen existiert. Abhilfe schafft ein Skript, das die erforderlichen Prüfungen durchführt, bevor die Spalte der Tabelle hinzugefügt wird. Als Erstes wird geprüft, ob die entsprechende Tabelle in der Datenbank vorhanden ist. Dies entspricht der durch Visual Studio erstellten Abfrage. Dann wird überprüft, ob eine Spalte mit dem angegebenen Namen vorhanden ist. Sind beide Bedingungen erfüllt, wird die Spalte angefügt.
IF EXISTS (SELECT * FROM Information_Schema.Columns
WHERE TABLE_SCHEMA ='dbo' AND TABLE_NAME = 'MeineTabelle')
AND NOT EXISTS(SELECT * FROM Information_Schema.Columns
WHERE TABLE_SCHEMA ='dbo' AND TABLE_NAME = 'MeineTabelle' AND
COLUMN_NAME ='NeueSpalte') ALTER TABLE dbo.MeineTabelle ADD
NeueSpalte INT NULL
Alternativ besteht die Möglichkeit in einer Variante der Abfrage, die bereits bestehende Spalte erst mit
ALTER TABLE dbo.MeinTabelle DROP COLUMN NeueSpalte
zu löschen und anschließend neu anzulegen. Damit ist sichergestellt, dass die Definition der Spalte in jedem Fall auf dem neuesten Stand ist. (Thorsten Kansy/am)
datenbanken
Weitere News:
Verlinke auf uns!
Verlinke auf codekicker.de von deinem Blog oder aus deiner Forensignatur:
databasepro berichtet alle zwei Monate praxisnah über die Themen, die professionelle Datenbank-Architekten, -Administratoren, Consultants, Anwender und IT-Manager, die sich mit der Auswahl von Technologien, Plattformen, Datenbanken und Entwicklungsumgebungen beschäftigen, Tag für Tag brauchen.