有点 SQL 新手所以希望能解释一下:
所以我有一个 USCars 和一个 USCars_AUD(用于审计)表。然后我有一个 Cars 和一个 Cars_AUD 表。
在我的 USCars 和 USCars_AUD 表中,我有一列描述。我正在从表中删除此列并将其添加到 Main Cars 和 Cars_AUD 表中。
我们有一个数据库项目来执行此操作,并且有部署前和部署后脚本。USCars 和 USCars_AUD 中的 Id 列将与 Cars 和 Cars_AUD 表中的 Id 相同。
因此,我更新了数据库项目中的模式对象,以反映 USCars 和 USCars_AUD 将删除描述并将其添加到 Cars 和 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
'
现在 Cars 表中有一些额外的信息,这些信息不在 USCars 中,所以我需要从中选择所有内容到一个由 Id 连接的临时表中吗?所以结果是我希望我的最终 Cars 和 Cars_AUD 表包含它最初包含的所有内容,但是它在 USCars 和 USCars_AUD 表中有一个描述,我想将描述复制到具有相同 ID 的行
在 Post Deploy 中,我会将这个 Joined temp 表中的值插入到 Cars Table 中,然后 Drop the temp 表