Je suis de la génération d'un script automatique de la migration des changements à partir de plusieurs bases de données de développement à la mise en scène ou de la production. Fondamentalement, il faut un tas de modifier les scripts, et les fusionne en un seul script, enveloppant chaque script dans un IF whatever BEGIN ... END
déclaration.
Toutefois, certains de ces scripts nécessitent un GO
déclaration, de sorte que, par exemple, l'analyseur SQL connaît une nouvelle colonne après sa création.
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
Cependant, une fois que je l'envelopper dans une IF
bloc:
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
Il échoue parce que je suis l'envoi d'un BEGIN
avec l'absence de correspondance END
. Cependant, si je supprime l' GO
il se plaint de nouveau sur une colonne inconnues.
Est-il possible de créer et de mettre à jour la même colonne au sein d'un seul IF
bloc?