位一個SQL新手,所以希望解釋這個確定:SQL Server的部署前後腳本
所以我有一個USCars和USCars_AUD(審計)表。然後我有一輛Cars和一輛Cars_AUD表。
在我的USCars和USCars_AUD表中,我有一列描述。我從表格中刪除此列並將其添加到Main Cars和Cars_AUD表格中。
我們有一個數據庫項目來做到這一點,並有前置和後置部署腳本。 USCars和USCars_AUD中的Id列將與Cars和Cars_AUD表相同。
所以我已經更新數據庫中的項目我的模式對象,以反映USCars和USCars_AUD將描述刪除,它被添加到汽車和Cars_AUD。
我掙扎了一下與查詢運行部署前和部署後。理想情況下,我想要一個IF類型的條件 - 說只有當USCars表包含說明列時才運行。 (不知道這是可能的)
然後我需要所有的數據從兩個表到臨時表複製預部署
-- need an If conditional to only run if USCars table contains Description
-- then begin /end
print 'Moving USCars and Cars and Audit tables and related data to temp tables'
exec sp_executesql N'
select * into Upgrade_USCars from USCars
select * into Upgrade_USCars_AUD from USCars_AUD
'
現在汽車的表中有一些額外的信息,是不是在USCars所以我需要選擇它的所有內容加入由Id加入的臨時表中?因此,其結果將是我希望我的最後的汽車和Cars_AUD表包含一切它在它原本但如果它在我需要特別說明用相同的ID複製到該行的USCars和USCars_AUD表說明
在後部署,那麼我會插入來自該加入臨時表中的值返回到汽車的表,然後刪除臨時表
感謝 - 這就是我需要 - 左外連接爲我的其他部分工作,並檢查其中一個臨時表是不是空後部署腳本是我用我的if ()開始結束塊。 –