Solución: Usar el @@ERROR Cuando creo los SPs de actualización o inserción de datos realizo, más o menos, lo siguiente:
CREATE PROCEDURE sp_ejemplo @param1 integer, @param2 integer AS BEGIN TRANSACTION --Inicia la transacción --La sentencia de actualización o inserción update tabla set campo1 = @param1 from tabla where campo2 = @param2 IF @@ERROR != 0 --Chequeo la variable @@ERROR BEGIN ROLLBACK TRANSACTION --Reversa la transacción si hay error RETURN END ELSE BEGIN COMMIT TRANSACTION --Si está correcto, al final, ejecuta la transacción RETURN END GO