ฉันกำลังสร้างสคริปต์สำหรับย้ายการเปลี่ยนแปลงโดยอัตโนมัติจากฐานข้อมูลการพัฒนาหลายฐานข้อมูลไปยังการจัดเตรียม / การผลิต โดยทั่วไปจะใช้สคริปต์การเปลี่ยนแปลงจำนวนมากและรวมเข้าด้วยกันเป็นสคริปต์เดียวโดยรวมแต่ละสคริปต์ไว้ในIF whatever BEGIN ... END
คำสั่ง
อย่างไรก็ตามสคริปต์บางส่วนต้องการGO
คำสั่งเพื่อให้ตัวแยกวิเคราะห์ SQL รู้เกี่ยวกับคอลัมน์ใหม่หลังจากสร้างแล้ว
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
อย่างไรก็ตามเมื่อฉันห่อสิ่งนั้นไว้ในIF
บล็อก:
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
มันล้มเหลวเพราะฉันส่งโดยไม่มีการจับคู่BEGIN
END
อย่างไรก็ตามถ้าฉันลบGO
มันก็บ่นอีกครั้งเกี่ยวกับคอลัมน์ที่ไม่รู้จัก
มีวิธีใดในการสร้างและอัปเดตคอลัมน์เดียวกันภายในIF
บล็อกเดียวหรือไม่?