Ho bisogno di aggiungere una colonna specifica se non esiste. Ho qualcosa come il seguente, ma restituisce sempre falso:
IF EXISTS(SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'myTableName'
AND COLUMN_NAME = 'myColumnName')
Come posso controllare se una colonna esiste in una tabella del database SQL Server?
Modificate quanto segue per soddisfare le vostre esigenze specifiche:
if not exists (select
column_name
from
INFORMATION_SCHEMA.columns
where
table_name = 'MyTable'
and column_name = 'MyColumn')
alter table MyTable add MyColumn int
Modifica per affrontare la modifica della domanda: Questo dovrebbe funzionare - dai un'occhiata attenta al tuo codice per trovare errori stupidi; stai interrogando INFORMATION_SCHEMA sullo stesso database a cui viene applicato il tuo inserimento, per esempio? Hai un errore di battitura nel nome della tua tabella/colonna in entrambe le dichiarazioni?
Prova questo...
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
Prima controlla se la combinazione table
/colonna
(id
/name
) esiste in dbo.syscolumns
(una tabella interna di SQL Server che contiene le definizioni dei campi), e se non esiste emetti la query ALTER TABLE
appropriata per aggiungerla. Per esempio:
IF NOT EXISTS ( SELECT *
FROM syscolumns
WHERE id = OBJECT_ID('Client')
AND name = 'Name' )
ALTER TABLE Client
ADD Name VARCHAR(64) NULL