位一个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 ()开始结束块。 –