Saya membuat skrip untuk memigrasikan perubahan secara otomatis dari beberapa database pengembangan ke pementasan / produksi. Pada dasarnya, ini membutuhkan banyak perubahan-skrip, dan menggabungkannya menjadi satu skrip, membungkus setiap skrip dalam sebuah IF whatever BEGIN ... END
pernyataan.
Namun, beberapa skrip memerlukan GO
pernyataan sehingga, misalnya, parser SQL mengetahui tentang kolom baru setelah dibuat.
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
Namun, setelah saya membungkusnya dalam satu 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
Gagal karena saya mengirim BEGIN
tanpa kecocokan END
. Namun, jika saya menghapusnya, GO
mengeluh lagi tentang kolom yang tidak diketahui.
Apakah ada cara untuk membuat dan memperbarui kolom yang sama dalam satu IF
blok?