Mamy operacje DML na każdym etapie zadania programu SQL Server. Aby zapewnić aktualizację / wkładka zostanie wycofana w przypadku coś pójdzie nie tak, mam owinięty modyfikacji danych o każdym kroku w TRY CATCH
i TRANSACTION
bloków:
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
Czy zapewnia to wycofanie manipulacji danymi w przypadku błędu (błędów)? Czy należy wziąć pod uwagę inne względy?
Czy byłby to lepszy sposób (używając konfiguracji itp.)?
Dziękuję Ci.