📍 SAVEPOINT no SQL

Introdução

O comando SAVEPOINT pertence ao grupo TCL (Transaction Control Language) e permite criar pontos de controle dentro de uma transação.

Com ele é possível desfazer apenas parte das operações realizadas sem cancelar toda a transação.

📌 SAVEPOINT cria um ponto de retorno dentro de uma transação SQL.

Por que utilizar SAVEPOINT?

Em transações grandes, pode ser necessário voltar apenas uma etapa específica sem perder todas as alterações anteriores.


Exemplo:

1 - Atualizar cliente

2 - Atualizar pedido

3 - Atualizar estoque


Se ocorrer erro no estoque,

podemos desfazer somente essa etapa.
          

Sintaxe


SAVEPOINT nome_do_ponto;
          

Remover um SAVEPOINT

Podemos excluir um ponto de controle utilizando:


RELEASE SAVEPOINT nome_do_ponto;
          

Exemplo Básico


START TRANSACTION;


UPDATE clientes

SET cidade='São Paulo'

WHERE id=1;


SAVEPOINT cliente_atualizado;


UPDATE pedidos

SET status='Enviado'

WHERE id=10;


ROLLBACK TO cliente_atualizado;


COMMIT;
          

O pedido será desfeito, mas a alteração do cliente permanecerá.

ROLLBACK TO SAVEPOINT

O comando permite retornar a um ponto específico da transação.


ROLLBACK TO nome_do_ponto;
          

Apenas as operações posteriores ao SAVEPOINT serão canceladas.

Fluxo de uma Transação


START TRANSACTION


      ↓


INSERT


      ↓


SAVEPOINT etapa1


      ↓


UPDATE


      ↓


ROLLBACK TO etapa1


      ↓


COMMIT
          

SAVEPOINT x ROLLBACK

SAVEPOINT ROLLBACK
Cria ponto de retorno Desfaz alterações
Permite voltar parcialmente Normalmente cancela toda transação
Maior controle Maior impacto

SAVEPOINT em Processos Complexos

É muito utilizado em sistemas que possuem várias etapas de gravação.

Sistema Exemplo
E-commerce Pedido, pagamento e estoque
Banco Transferências financeiras
ERP Processos de faturamento
Logística Movimentação de produtos

Cuidados com SAVEPOINT

Cuidado Motivo
Criar muitos SAVEPOINTS Aumenta complexidade
Nomear mal os pontos Dificulta manutenção
Não controlar erros Pode gerar inconsistências
Transações longas Podem bloquear recursos

Boas Práticas

Resumo da Aula

🎓 Aula concluída! Agora você sabe utilizar SAVEPOINT para controlar etapas dentro de transações SQL.