Preciso de adicionar uma coluna específica se ela não existir. Eu tenho algo como o seguinte, mas sempre retorna falso:
IF EXISTS(SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'myTableName'
AND COLUMN_NAME = 'myColumnName')
Como posso verificar se existe uma coluna em uma tabela do banco de dados do SQL Server?
Ajuste o abaixo para atender às suas necessidades específicas:
if not exists (select
column_name
from
INFORMATION_SCHEMA.columns
where
table_name = 'MyTable'
and column_name = 'MyColumn')
alter table MyTable add MyColumn int
Editar para lidar com editar para questionar: Isso deve funcionar - dê uma olhada cuidadosa em seu código para erros estúpidos; você está consultando INFORMATION_SCHEMA na mesma base de dados em que o seu encarte está sendo aplicado, por exemplo? Você tem um erro de digitação na sua tabela/nome da coluna em alguma das expressões?
Tenta isto...
IF NOT EXISTS(
SELECT TOP 1 1
FROM INFORMATION_SCHEMA.COLUMNS
WHERE
[TABLE_NAME] = 'Employees'
AND [COLUMN_NAME] = 'EmployeeID')
BEGIN
ALTER TABLE [Employees]
ADD [EmployeeID] INT NULL
END
Primeiro verifique se a combinação table
/column
(id
/name
) existe em dbo.syscolumns
(uma tabela interna do SQL Server que contém definições de campos), e se não emitir a consulta apropriada ALTER TABLE
para adicioná-la. Por exemplo, a combinação id
/name
existe em
IF NOT EXISTS ( SELECT *
FROM syscolumns
WHERE id = OBJECT_ID('Client')
AND name = 'Name' )
ALTER TABLE Client
ADD Name VARCHAR(64) NULL