Değişiklikleri birden çok geliştirme veritabanından hazırlama / üretime otomatik olarak geçirmek için bir komut dosyası oluşturuyorum. Temel olarak, bir dizi değişiklik betiğini alır ve bunları tek bir betikte birleştirerek her bir komut dosyasını bir IF whatever BEGIN ... END
ifadeye sarar.
Ancak, bazı komut dosyaları GO
, örneğin SQL ayrıştırıcısının oluşturulduktan sonra yeni bir sütun hakkında bilgi sahibi olması için bir ifade gerektirir .
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
Ancak, bunu bir IF
bloğa sardığımda:
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
Başarısız oluyor çünkü BEGIN
eşleşme olmadan bir gönderiyorum END
. Ancak, kaldırırsam, GO
bilinmeyen bir sütun hakkında tekrar şikayet ediyor.
Aynı sütunu tek bir IF
blokta oluşturmanın ve güncellemenin herhangi bir yolu var mı ?