Verwenden von OUTPUT mit verbundenen Tabellen

Warum funktioniert das nicht?

INSERT INTO dbo.Pending_Break (Pending_Pod_ID, Break_Date_Time, Break_Length, Booked_Length) OUTPUT INSERTED.Pending_BH_ID -- This is the inserted identity , INSERTED.Pending_Pod_ID , INSERTED.Break_Name , INSERTED.Break_Date_Time , pb.PENDING_BH_ID -- complains on this one INTO #InsertedPendingBreaks SELECT ippod.Pending_Pod_ID, pb.Break_Date_Time pb.break_length, 0 FROM PendingBreak pb JOIN InsertedPod ippod ON ... 

Kann ich nichts anderes als Einfügen oder Gelöscht in der OUTPUT-Klausel verwenden?

Die inserted und deleted Tabellen sind nur in DML-Triggern verfügbar. Ich bin mir nicht sicher, ob du gerade einen Code-Snippet aus einem Auslöser gezogen hast, aber wenn das eine eigenständige Charge ist, dann wird es nicht funktionieren.

Auch gibt es keine aktualisierte Tabelle. Ein Update ist ein Löschen und dann ein Insert für diese. deleted enthält die alten data und inserted enthält die neuen data auf einem UPDATE.

Kann ich nichts anderes als Einfügen oder Gelöscht in der OUTPUT-Klausel verwenden?

Nein, das kannst du nicht. Zumindest nicht mit einem deployment . In SQL server 2008 können Sie Ihre Einfügung stattdessen in eine Merge- statement konvertieren und dort können Sie Werte aus der Quellentabelle in der Ausgabeklausel verwenden.

Schauen Sie sich diese Frage an, wie Sie das in SQL server 2008 machen können. Verwenden Sie Merge..output, um eine Zuordnung zwischen source.id und target.id zu erhalten