J'ai apporté quelques modifications à ma base de données et je dois migrer les anciennes données vers les nouvelles tables. Pour cela, je dois remplir une table ( ReportOptions
) en prenant les données du tableau original ( Practice
) et remplissent un deuxième tableau intermédiaire ( PracticeReportOption
).
ReportOption (
ReportOptionId int PK,
field1, field2...
)
Practice (
PracticeId int PK,
field1, field2...
)
PracticeReportOption (
PracticeReportOptionId int PK,
PracticeId int FK,
ReportOptionId int FK,
field1, field2...
)
J'ai créé une requête pour obtenir toutes les données dont j'ai besoin pour passer de Practice
a ReportOptions
mais je n'arrive pas à remplir le tableau intermédiaire.
--Auxiliary tables
DECLARE @ReportOption TABLE (
PracticeId int, -- This field is not on the actual ReportOption table
field1, field2...
)
DECLARE @PracticeReportOption TABLE (
PracticeId int,
ReportOptionId int,
field1, field2
)
--First I get all the data I need to move
INSERT INTO @ReportOption
SELECT P.practiceId, field1, field2...
FROM Practice P
--I insert it into the new table,
--but somehow I need to have the repation PracticeId / ReportOptionId
INSERT INTO ReportOption (field1, field2...)
OUTPUT @ReportOption.PracticeId, --> this is the field I don't know how to get
inserted.ReportOptionId
INTO @PracticeReportOption (PracticeId, ReportOptionId)
SELECT field1, field2
FROM @ReportOption
-- This would insert the relationship, If I knew how to get it!
INSERT INTO @PracticeReportOption (PracticeId, ReportOptionId)
SELECT PracticeId, ReportOptionId
FROM @ReportOption
Si je pouvais référencer un champ qui ne fait pas partie de la table de destination dans le fichier OUTPUT
Ce serait formidable (je pense que je ne peux pas, mais je n'en suis pas sûr). Comment faire pour répondre à mon besoin ?