Ich habe einige Änderungen an meiner Datenbank vorgenommen und muss die alten Daten in die neuen Tabellen migrieren. Dazu muss ich eine Tabelle (ReportOptions) aus den Originaltabellen (Practice) und eine zweite Zwischentabelle (PracticeReportOption) ausfüllen.
ReportOption (ReportOptionId int PK, field1, field2...)
Practice (PracticeId int PK, field1, field2...)
PracticeReportOption (PracticeReportOptionId int PK, PracticeId int FK, ReportOptionId int FK, field1, field2...)
Ich habe eine Abfrage durchgeführt, um alle Daten abzurufen, die ich zum Üben von Practice zu ReportOptions benötige, aber ich habe Probleme, die Zwischentabelle zu füllen
--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
Wenn ich auf ein Feld verweisen könnte, das sich nicht in der Zieltabelle der OUTPUT-Klausel befindet, wäre das großartig (ich denke, ich kann nicht, aber ich weiß es nicht genau). Irgendwelche Ideen, wie ich meine Bedürfnisse erfüllen kann?
OUTPUT
Klausel jede der Spalten der Tabelle zurückgeben, in die Sie eine Zeile eingefügt haben . Selbst wenn Sie in IhrerINSERT
Anweisung keinen Wert für eine bestimmte Spalte angeben, können Sie diese Spalte dennoch in derOUTPUT
Klausel angeben . Sie können jedoch keine SQL-Variablen oder -Spalten aus anderen Tabellen zurückgeben.