Generuję skrypt do automatycznej migracji zmian z wielu programistycznych baz danych do przemieszczania / produkcji. Zasadniczo wymaga kilku skryptów zmian i łączy je w jeden skrypt, opakowując każdy skrypt w IF whatever BEGIN ... END
instrukcję.
Jednak niektóre skrypty wymagają GO
instrukcji, aby na przykład parser SQL wiedział o nowej kolumnie po jej utworzeniu.
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
Jednak kiedy zawinąłem to w IF
blok:
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
Nie udaje się, ponieważ wysyłam BEGIN
bez dopasowania END
. Jeśli jednak usunę GO
to znowu narzeka na nieznaną kolumnę.
Czy istnieje sposób na utworzenie i zaktualizowanie tej samej kolumny w jednym IF
bloku?