Si simplemente envolver mi consulta con:Plantilla básica para transacciones en SQL Server
BEGIN TRANSACTION
COMMIT TRANSACTION
Si algo falla en el interior de eso, va a deshacer de forma automática?
De mirar otro código, que parecen para comprobar si hay un error, si hay un error entonces hacer una declaración GOTO que a su vez llama a ROLLBACK TRANSACTION
Pero eso parece que adjudicar de trabajo, a tener que comprobar para IF (@@ ERROR <> 0) después de cada inserción/actualización.
Esto realmente no responde a la pregunta ... –