Quick Tip 11 – Como Fazer o Save-Point de uma Transação no SQL Server

Essa dica rápida é direcionada principalmente para os desenvolvedores que gostam de criar procedures enormes no SQL Server com regras de negócio.

Você sabia que é possível criar um ponto de restauração de uma transação? Claro! Através de backup.
Contudo, não é de backup que estou falando, simplesmente criar uma tag na transação para fazer o rollback até um determinado ponto do código.

Por mais que esse título pareça algo complicado, estou falando de algo simples, do comando save transaction.

Imagine que você iniciou a transação e neste ponto cria um save-point da transação, se parte da transação é condicionalmente cancelada você pode utilizar o rollback transaction.

Veja o exemplo abaixo:

select * from Person.Person where BusinessEntityID = 21
go
Begin TRAN 
    begin try
        Save TRAN upPessoa
            update Person.Person set Title = 'Mr' where BusinessEntityID = 21
            RAISERROR ('meu erro',16 ,1);
    END TRY
Begin CATCH
    print 'rollback'
    ROLLBACK TRAN upPessoa
end CATCH

COMMIT TRAN
go
select * from Person.Person where BusinessEntityID = 21

O exemplo acima tem apenas a função de ilustrar a volta da transação até o ponto salvo. Nele podemos ver, que após salvar a transação executaremos um comando update e na sequência geramos um erro utilizando o comando RaiseError, assim, o ponto de execução cai no Catch que faz o rollback para a transação salva.

Para saber mais sobre está feature recomendo a leitura do docs da Microsoft.

Espero que essa dica seja útil para você. Até a próxima!

Abraço, Rodrigo

Deixe uma resposta

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.