Ich habe einige Änderungen an meiner Datenbank vorgenommen, und ich muss die alten Daten zu den neuen Tabellen migrieren. Dafür muss ich eine Tabelle (ReportOptions) ausfüllen, die Daten aus der Originaltabelle (Practice) übernimmt, und eine zweite Zwischentabelle (PracticeReportOption) ausfüllen.Ist es möglich, für SQL Output-Klausel eine Spalte zurückgegeben werden, nicht eingefügt?
ReportOption (ReportOptionId int PK, field1, field2...)
Practice (PracticeId int PK, field1, field2...)
PracticeReportOption (PracticeReportOptionId int PK, PracticeId int FK, ReportOptionId int FK, field1, field2...)
habe ich eine Abfrage alle Daten bekommen muss ich aus der Praxis zu Report bewegen, aber ich habe Probleme bei der Zwischentisch
--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
zu füllen Wenn ich ein Feld verweisen könnte, die ist nicht auf der Zieltabelle in der OUTPUT-Klausel, das wäre großartig (ich denke, ich kann nicht, aber ich weiß es nicht genau). Irgendwelche Ideen, wie ich mein Bedürfnis befriedigen kann?
Vielen Dank im Voraus.
Sie können jede der Spalten der Tabelle, in die Sie eine Zeile einfügen, in Ihre OUTPUT-Klausel zurückgeben. Auch wenn Sie in Ihrer INSERT-Anweisung keinen Wert für eine bestimmte Spalte angeben, können Sie diese Spalte dennoch in der OUTPUT-Klausel angeben. Sie können jedoch keine SQL-Variablen oder Spalten aus anderen Tabellen zurückgeben. –
@marc_s danke für Ihre Antwort, aber ich habe nicht das Feld, das ich brauche in der Zieltabelle (Ich brauche PracticeId, die nicht auf ReportOption ist) –