Abbiamo operazioni DML in ogni passaggio di un processo di SQL Server. Per garantire l'aggiornamento / inserimento verrà eseguito il rollback in caso qualcosa vada storto, ho avvolto le modifiche dei dati di ogni passo in TRY CATCH
e TRANSACTION
blocchi:
BEGIN TRY
BEGIN TRANSACTION
[[INSERT/update statements]] ...
IF @@TRANCOUNT > 0
BEGIN
COMMIT TRANSACTION
PRINT 'Successful.'
END
END TRY
BEGIN CATCH
SELECT
ERROR_NUMBER() AS ErrorNumber,
ERROR_SEVERITY() AS ErrorSeverity,
ERROR_STATE() AS ErrorState,
ERROR_PROCEDURE() AS ErrorProcedure,
ERROR_LINE() AS ErrorLine,
ERROR_MESSAGE() AS ErrorMessage
IF @@TRANCOUNT > 0
BEGIN
ROLLBACK TRANSACTION
PRINT 'Unsuccessful.'
END
END CATCH
Garantisce il rollback delle manipolazioni dei dati in caso di errori? O altre considerazioni dovrebbero essere prese in considerazione?
Sarebbe un modo migliore per farlo (usando configurazioni, ecc.)?
Grazie.