Как использовать ОБНОВЛЕНИЕ в SQL-сервере IF ELSE - PullRequest
0 голосов
/ 27 июня 2019

Я пытаюсь проверить, существует ли столбец в данной таблице.

При проверке, существует ли он, я хочу обновить столбец значением 1, если нет, создать и обновить.

Однако каждый раз, когда я запускаю ошибку, столбец все еще не существует.

Во время выполнения сначала рассматривается мое обновление таблицы изменения.

Чтобы проиллюстрировать, что япытаюсь сделать:

IF EXISTS( SELECT * FROM BANCO_DE_DADOS.INFORMATION_SCHEMA.COLUMNS 
            WHERE (TABLE_NAME) = 'MinhaTabela' 
            AND  (COLUMN_NAME) = 'CodZona'  )  

BEGIN
    UPDATE BANCO_DE_DADOS..MinhaTabela 
    SET CodZona = 1 
    WHERE CodZona < 1 OR CodZona IS NULL    
END

ELSE
BEGIN 

    ALTER TABLE BANCO_DE_DADOS..MinhaTabela
    ADD  [CodZona] [int] NULL

    UPDATE BANCO_DE_DADOS..MinhaTabela 
    SET CodZona = 1

END

Ошибка:

Message 207, Level 16, State 1, Line 7
Invalid column name 'CodZona'.
Message 207, Level 16, State 1, Line 7
Invalid column name 'CodZona

'.

1 Ответ

0 голосов
/ 27 июня 2019

Проблема компиляции против выполнения запросов.Ошибка возникает во время компиляции.

Вы можете сделать:

IF NOT EXISTS (SELECT 1 
               FROM BANCO_DE_DADOS.INFORMATION_SCHEMA.COLUMNS 
               WHERE TABLE_NAME = 'MinhaTabela' AND
                     COLUMN_NAME = 'CodZona'
              ) 
BEGIN
    EXEC sp_executesql N'ALTER TABLE BANCO_DE_DADOS..MinhaTabela ADD [CodZona] [int] NULL';
END; 
GO

update BANCO_DE_DADOS..MinhaTabela
    set CodZona = 1
    where CodZona < 1 or CodZona is null;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...