SQL: Transaktionen Try/Catch?

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:

https://docs.microsoft.com/en-us/sql/t-sql/language-elements/try-catch-transact-sql?view=sql-server-2017

Print Friendly, PDF & Email