У меня есть запрос на добавление столбца, если он не существует.Это работает в первый раз, но если я запустлю его снова, произойдет сбой, говоря, что столбец существует?!?
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 обновляются, и какой надежный способ проверить, существует ли столбец?
Спасибо, Сэм