it-swarm.com.de

Spalte löschen, falls in SQL Server 2008 r2 vorhanden

Ich verwende SQL Server 2008 R2.

Ich möchte die Spalte löschen, wenn sie bereits in der Tabelle vorhanden ist. Andernfalls wird kein Fehler ausgegeben.

Versucht:

ALTER TABLE Emp 
DROP COLUMN IF EXISTS Lname;

Error:

Falsche Syntax neben dem Schlüsselwort 'IF'.

Durch die Suche habe ich erfahren, dass diese Option ab 2016 verfügbar ist.

Was ist die Alternative in SQL Server 2008 R2?

6
MAK
IF EXISTS (SELECT 1
               FROM   INFORMATION_SCHEMA.COLUMNS
               WHERE  TABLE_NAME = 'Emp'
                      AND COLUMN_NAME = 'Lname'
                      AND TABLE_SCHEMA='DBO')
  BEGIN
      ALTER TABLE Emp
        DROP COLUMN Lname
  END
GO
10
Chanukya

Aus dem MSDN social documentation können wir versuchen:

IF EXISTS (SELECT 1 FROM sys.objects o
          INNER JOIN sys.columns c ON o.object_id = c.object_id
          WHERE o.name = 'Emp' AND c.name = 'Lname')
ALTER TABLE dbo.Emp DROP COLUMN Lname;
2
Tim Biegeleisen