Если столбец существует, проблема с запросом - SQL Server - PullRequest
1 голос
/ 29 октября 2010

У меня есть запрос на добавление столбца, если он не существует.Это работает в первый раз, но если я запустлю его снова, произойдет сбой, говоря, что столбец существует?!?

IF NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'TABLE_NAME' AND COLUMN_NAME = 'COLUMN_NAME')
BEGIN
    ALTER TABLE TABLE_NAME ADD COLUMN nchar(3) NULL;
END

И когда я запускаю запрос к INFORMATION_SCHEMA.COLUMNS, он ничего не возвращает.

Я также попробовал версию

IF NOT EXISTS (SELECT * FROM SYS.COLUMNS WHERE NAME = N'COLUMN_NAME' AND OBJECT_ID = OBJECT_ID(N'TABLE_NAME'))

, которая демонстрирует такое же поведение (она работает один раз и дает сбой при втором запуске).

В какой момент выполняетсяТаблицы sys обновляются, и какой надежный способ проверить, существует ли столбец?

Спасибо, Сэм

1 Ответ

0 голосов
/ 29 октября 2010

Я считаю, что это была проблема с USE из-за нашей неправильной настройки базы данных. Запрос information_schema достиг основного, в то время как обновление предназначалось для другой базы данных. D'ой!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...