Es gibt tatsächlich zwei völlig unterschiedliche Ansätze….
Ich nutze diese kürzere – vielleicht etwas älter – Variante:
Begin Transaction
Begin Try
/*Insert/Update/…*/
End Try
Begin Catch
IF @@TRANCOUNT > 0
ROLLBACK TRANSACTION;
End Catch
IF @@TRANCOUNT > 0
COMMIT TRANSACTION;
/*Das Commit ist das "End Transaction"*/
Die zweite Variante benötigt das „XACT_STATE“ und liest sich noch komplizierter und werde ich nur nutzen, wenn ich mit dem o. g. T-SQL Code nicht weiter komme. Aber beschrieben sind beide Wege von Microsoft in dem u. g. Link
Link:
