Necesito añadir una columna específica si no existe. Tengo algo como lo siguiente, pero siempre devuelve false:
IF EXISTS(SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'myTableName'
AND COLUMN_NAME = 'myColumnName')
¿Cómo puedo comprobar si una columna existe en una tabla de la base de datos SQL Server?
Adapte lo siguiente a sus necesidades 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 tratar con editar a la pregunta: Esto debería funcionar - revise cuidadosamente su código en busca de errores estúpidos; ¿está consultando INFORMATION_SCHEMA en la misma base de datos a la que se aplica su inserción, por ejemplo? ¿Tiene un error tipográfico en el nombre de la tabla/columna en cualquiera de las declaraciones?
Prueba esto...
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
Primero comprueba si la combinación tabla
/columna
(id
/nombre) existe en
dbo.syscolumns(una tabla interna de SQL Server que contiene las definiciones de los campos), y si no es así emite la consulta apropiada
ALTER TABLE` para añadirla. Por ejemplo:
IF NOT EXISTS ( SELECT *
FROM syscolumns
WHERE id = OBJECT_ID('Client')
AND name = 'Name' )
ALTER TABLE Client
ADD Name VARCHAR(64) NULL