web-dev-qa-db-fra.com

Supprimer la colonne s'il existe dans SQL Server 2008 r2

J'utilise SQL Server 2008 R2.

Je veux supprimer la colonne si elle existe déjà dans la table sinon ne pas jeter d'erreur.

A tenté:

ALTER TABLE Emp 
DROP COLUMN IF EXISTS Lname;

Erreur:

Syntaxe incorrecte près du mot clé "IF".

En cherchant, j'ai appris que cette option est disponible à partir de 2016.

Quelle est l'alternative dans 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

Depuis le MSDN social documentation , nous pouvons essayer:

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