Gibt es eine Möglichkeit, die Identitätswerte unmittelbar vor einem Einfügen und die neuen Identitätswerte unmittelbar nach einem Einfügen in eine Mapping-Tabelle zu speichern? Die Zuordnungstabelle wird verwendet, um Fremdschlüssel in anderen Tabellen zu aktualisieren.Identität vor und nach einem Einfügen speichern?
Anfangs dachte ich, dies wäre mit der OUTPUT INTO-Klausel möglich, aber nur die eingefügten Werte sind einfügbar. Ich bin mir nicht sicher, wie ich die OUTPUT-Klausel selbst verwenden kann, um die Aufgabe zu erledigen. Vielleicht eine Art Unterabfrage?
Vielleicht ist das alles zu kompliziert und es gibt eine Möglichkeit, SCOPE_IDENTITY und Unterabfragen dazu zu verwenden.
Jede Hilfe würde sehr geschätzt werden.
p.s. Ja, ich weiß, dass ich das lösen kann, indem ich Identitäten 'reserviere' (Dummy-Zeilen einfügen und dann DBCC CHECKINDENT lösche), die neu 'reservierten' Identitäten und die alten Identitäten in der Zuordnungstabelle speichern, die Tabelle mit den neuen Identitäten aktualisieren und schließlich macht eine Einfügung mit INSERT_IDENTITIES eingeschaltet - aber das ist chaotisch.
Dies gilt für SQL Server 2008R2.
Hier ist, was nicht funktioniert:
INSERT
[SomeTable]
OUTPUT
INSERTED.[Id],
[Id] -- This doesn't work
INTO
[#mappingTable]
SELECT
(SomeColumns)
FROM
[#someOtherTable];
Bummer, dies kann nicht mit einem UPDATE auf die Mapping-Tabelle mit einem CTE, das die Einfügung tut und eine OUTPUT-Klausel die neue Identität zurückgibt getan werden? – user514848