Nun ja, es gibt da noch den:

Select bla [into ...] from final table (update .....)
Select bla [into ...] from final table (insert ....)

Damit kannst du den Identity_Val_Local() vergesssen, da dieser
a) nur auf die letzte Identity funktioniert, die z.B. durch Trigger verfälscht werden kann
b) Du eine Identity-Column überhaupt erst mal haben musst.

Der "Select ... from final table ()" muss als Ergebnis genau nur 1 Satz zurückgeben.
Er liefert zusätzlich auch die Felder, die ggf. durch Default's oder Trigger ergänzt wurden.