Ik moet een specifieke kolom toevoegen als die niet bestaat. Ik heb iets als het volgende, maar het geeft altijd false terug:
IF EXISTS(SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'myTableName'
AND COLUMN_NAME = 'myColumnName')
Hoe kan ik controleren of een kolom bestaat in een tabel van de SQL Server database?
Pas het onderstaande aan uw specifieke behoeften aan:
if not exists (select
column_name
from
INFORMATION_SCHEMA.columns
where
table_name = 'MyTable'
and column_name = 'MyColumn')
alter table MyTable add MyColumn int
Aanpassen om vraag aan te passen: Dat zou moeten werken - kijk nog eens goed naar je code voor domme fouten; doe je bijvoorbeeld een query op INFORMATION_SCHEMA op dezelfde database als waar je insert op wordt toegepast? Heb je een typfout in je tabel/kolomnaam in een van beide verklaringen?
Probeer dit eens...
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
Controleer eerst of de table
/column
(id
/name
) combinatie bestaat in dbo.syscolumns
(een interne SQL Server tabel die velddefinities bevat), en zo niet, voer de juiste ALTER TABLE
query uit om deze toe te voegen. Bijvoorbeeld:
IF NOT EXISTS ( SELECT *
FROM syscolumns
WHERE id = OBJECT_ID('Client')
AND name = 'Name' )
ALTER TABLE Client
ADD Name VARCHAR(64) NULL