Jeg skal tilføje en bestemt kolonne, hvis den ikke findes. Jeg har noget som det følgende, men det returnerer altid false:
IF EXISTS(SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'myTableName'
AND COLUMN_NAME = 'myColumnName')
Hvordan kan jeg kontrollere, om en kolonne findes i en tabel i SQL Server-databasen?
Tilpas nedenstående til dine specifikke behov:
if not exists (select
column_name
from
INFORMATION_SCHEMA.columns
where
table_name = 'MyTable'
and column_name = 'MyColumn')
alter table MyTable add MyColumn int
Rediger for at håndtere redigering til spørgsmål: Det burde virke - tag et grundigt kig på din kode for dumme fejl; forespørger du INFORMATION_SCHEMA på den samme database som din indsættelse anvendes på for eksempel? Har du en slåfejl i dit tabel/spalte navn i en af de to statements?
Prøv dette...
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
Tjek først, om kombinationen table
/column
(id
/name
) findes i dbo.syscolumns
(en intern SQL Server-tabelle, der indeholder feltdefinitioner), og hvis ikke, skal du sende den relevante forespørgsel ALTER TABLE
for at tilføje den. For eksempel:
IF NOT EXISTS ( SELECT *
FROM syscolumns
WHERE id = OBJECT_ID('Client')
AND name = 'Name' )
ALTER TABLE Client
ADD Name VARCHAR(64) NULL