Я создаю сценарий для автоматической миграции изменений из нескольких баз данных разработки в стадию / производство. По сути, он берет несколько сценариев изменений и объединяет их в один сценарий, оборачивая каждый сценарий в оператор 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
?