J'ai des tables [Moules], [Machines] et [Pièces détachées] chacune avec différents attributs/colonnes. Je voudrais les transformer en sous-types et créer pour eux une table supertype appelée [Assets] afin que je puisse les référencer tous ensemble dans une application de planification de maintenance.Remplir des clés étrangères pour une table de sous-types contenant déjà des données
La table [Assets] contiendra simplement les colonnes [Asset_ID], [Asset_Type] et [Description]. [Asset_ID] est une identité PK, [Asset_Type] est un int (par exemple, Molds = 1, Machines = 2, etc.) et [Description] sera extrait des tables de sous-types. Je vais ajouter une colonne appelée [Asset_FK] à chacune des tables de sous-types en tant que clé étrangère.
Mon problème est que chaque table de sous-type contient déjà des centaines à des milliers de lignes de données. Il serait déraisonnable de créer manuellement PK-FK pour chaque enregistrement existant, mais je ne suis pas sûr du SQL requis pour l'automatiser.
Pour peuplant les [actifs] table, j'ai actuellement ceci:
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
Mais, je ne suis pas sûr de savoir comment mettre à jour le FK dans [Moisissures] dans la même requête, ou si cela est encore la bonne approche. Plus précisément, je ne suis pas sûr de savoir comment identifier la ligne dans les sous-types que j'ai sélectionnés que je veux mettre à jour.
Pour résumer ma question, j'ai une table vide de type supertype et des tables de sous-types remplies. Je veux remplir la table supertype en utilisant les tables de sous-types et remplir automatiquement les valeurs FK pour les enregistrements de sous-type existants pour les lier. Comment puis-je faire cela en utilisant SQL (MS SQL Server 2008r2)?
Merci pour la réponse. Malheureusement, la description n'est pas toujours unique, ce qui ne fonctionne pas vraiment pour mon cas. En fait, cela me donne une idée cependant. – NeutronFlux