Трябва да добавя определена колона, ако тя не съществува. Имам нещо подобно на следното, но то винаги връща false:
IF EXISTS(SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'myTableName'
AND COLUMN_NAME = 'myColumnName')
Как мога да проверя дали дадена колона съществува в таблица от базата данни на SQL Server?
Направете промени в посочените по-долу данни, за да отговарят на вашите специфични изисквания:
if not exists (select
column_name
from
INFORMATION_SCHEMA.columns
where
table_name = 'MyTable'
and column_name = 'MyColumn')
alter table MyTable add MyColumn int
Упражнете, за да се справите с редакцията на въпроса: Това би трябвало да работи - прегледайте внимателно кода си за глупави грешки; например, запитвате ли INFORMATION_SCHEMA на същата база данни, към която се прилага вашата вмъкване? Имате ли печатна грешка в името на таблицата/колоната в някоя от двете декларации?
Опитайте това...
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
Първо проверете дали комбинацията table
/column
(id
/name
) съществува в dbo.syscolumns
(вътрешна таблица на SQL Server, която съдържа дефиниции на полета) и ако не съществува, издайте съответната заявка ALTER TABLE
, за да я добавите. Например:
IF NOT EXISTS ( SELECT *
FROM syscolumns
WHERE id = OBJECT_ID('Client')
AND name = 'Name' )
ALTER TABLE Client
ADD Name VARCHAR(64) NULL