У меня есть таблицы [Формы], [Машины] и [Запчасти], каждая с разными атрибутами/столбцами. Я хотел бы сделать их подтипами и создать для них таблицу супертипов под названием [Активы], чтобы я мог ссылаться на них все вместе в приложении для планирования обслуживания.
Таблица [Активы] будет просто содержать столбцы [Актив_ID], [Актив_Тип] и [Описание]. [Asset_ID] — это идентификатор PK, [Asset_Type] — это int (например, Molds = 1, Machines = 2 и т. д.), а [Description] будет взято из таблиц подтипов. Я добавлю столбец с именем [Asset_FK] в каждую из таблиц подтипов в качестве внешнего ключа.
Моя проблема в том, что в каждой таблице подтипов уже есть от сотен до тысяч строк данных. Было бы неразумно вручную создавать PK-FK для каждой существующей записи, но я не уверен в SQL, необходимом для его автоматизации.
Для заполнения таблицы [Активы] в настоящее время у меня есть это:
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
Но я не уверен, как обновить FK в [Moulds] в том же запросе, и является ли это правильным подходом. В частности, я не уверен, как определить строку в выбранных подтипах, которые я хочу обновить.
Подводя итог моему вопросу, у меня есть пустая таблица супертипов и заполненные таблицы подтипов. Я хочу заполнить таблицу супертипов, используя таблицы подтипов, и автоматически заполнить значения FK для существующих записей подтипов, чтобы связать их. Как это сделать с помощью SQL (MS SQL Server 2008r2)?