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 ... ENDinstrukcję.
Jednak niektóre skrypty wymagają GOinstrukcji, 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 IFblok:
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 BEGINbez dopasowania END. Jeśli jednak usunę GOto znowu narzeka na nieznaną kolumnę.
Czy istnieje sposób na utworzenie i zaktualizowanie tej samej kolumny w jednym IFbloku?