Kann die SQL Output-Klausel eine Spalte zurückgeben, die nicht eingefügt wurde?
Ich habe einige Änderungen an meiner Datenbank vorgenommen und muss die alten Daten in die neuen Tabellen migrieren. Dazu muss ich eine Tabelle (ReportOptions) füllen, die die Daten aus der Originaltabelle übernimmt (Practice), und eine zweite Zwischentabelle (PracticeReportOption) fü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 für den Wechsel 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 in der OUTPUT-Klausel auf ein Feld verweisen könnte, das sich nicht in der Zieltabelle befindet, wäre das großartig (ich glaube, ich kann nicht, aber ich weiß es nicht genau). Irgendwelche Ideen, wie ich mein Bedürfnis erfüllen kann?
Danke im Voraus.