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 ... ENDpernyataan.
Namun, beberapa skrip memerlukan GOpernyataan 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 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
Gagal karena saya mengirim BEGINtanpa kecocokan END. Namun, jika saya menghapusnya, GOmengeluh lagi tentang kolom yang tidak diketahui.
Apakah ada cara untuk membuat dan memperbarui kolom yang sama dalam satu IFblok?