我有表 [Moulds]、[Machines] 和 [SpareParts],每个表都有不同的属性/列。我想将它们变成子类型并为它们创建一个名为 [Assets] 的超类型表,这样我就可以在维护计划应用程序中同时引用它们。
[Assets] 表将仅包含 [Asset_ID]、[Asset_Type] 和 [Description] 列。[Asset_ID] 是一个标识 PK,[Asset_Type] 是一个 int(例如 Molds = 1、Machines = 2 等),并且 [Description] 将从子类型表中获取。我将在每个子类型表中添加一个名为 [Asset_FK] 的列作为外键。
我的问题是每个子类型表中已经有数百到数千行数据。为每个现有记录手动创建 PK-FK 是不合理的,但我不确定自动化它所需的 SQL。
为了填充 [Assets] 表,我目前有这个:
DECLARE @AssetID TABLE (ID int)
INSERT INTO Assets (Assets.Description, Assets.Asset_Type)
OUTPUT Inserted.Asset_ID INTO @AssetID
SELECT IsNull(Moulds.Description,''), 5
FROM Moulds
但是,我不确定如何在同一个查询中更新 [Moulds] 中的 FK,或者这是否是正确的方法。具体来说,我不确定如何识别我选择的要更新的子类型中的行。
总结我的问题,我有一个空白的超类型表和填充的子类型表。我想使用子类型表填充超类型表,并自动填写现有子类型记录的 FK 值以链接它们。如何使用 SQL (MS SQL Server 2008r2) 做到这一点?