Я генерирую script для автоматической миграции изменений из нескольких баз данных разработки в процесс постановки/производства. В принципе, он берет кучу скриптов изменений и объединяет их в один script, обертывая каждый script в инструкции IF whatever BEGIN ... END
.
Однако для некоторых сценариев требуется оператор GO
, так что, например, анализатор SQL знает о новом столбце после его создания.
ALTER TABLE dbo.EMPLOYEE
ADD COLUMN EMP_IS_ADMIN BIT NOT NULL
GO -- Necessary, or next line will generate "Unknown column: EMP_IS_ADMIN"
UPDATE dbo.EMPLOYEE SET EMP_IS_ADMIN = whatever
Однако, как только я завершу это в блок IF
:
IF whatever
BEGIN
ALTER TABLE dbo.EMPLOYEE ADD COLUMN EMP_IS_ADMIN BIT NOT NULL
GO
UPDATE dbo.EMPLOYEE SET EMP_IS_ADMIN = whatever
END
Не удается, потому что я отправляю BEGIN
без соответствия END
. Однако, если я удаляю GO
, он снова жалуется на неизвестный столбец.
Есть ли способ создать и обновить один и тот же столбец в одном блоке IF
?