Rollback e SavePoint em SQL:uma distinção clara
Os comandos `rollback` e` savepoint` são os comandos SQL usados para gerenciar estados de transação, mas servem a propósitos diferentes.
reversão: *
Objetivo: Redefina o banco de dados para um estado anterior, desfazendo todas as alterações feitas na transação atual.
* Escopo: Descarga tudo desde o início da transação.
*
Exemplo: `` `SQL
- Inicie uma transação
Iniciar a transação;
- Insira alguns dados
Insira nos clientes (nome, email) valores ('John Doe', '
[email protected]');
Inserir em pedidos (valores do cliente, o pedido) (1, '2023-10-27');
- Rollback todas as mudanças feitas na transação
Transação de reversão;
- Agora, o banco de dados está de volta ao seu estado antes do início da transação.
`` `
SavePoint: *
Objetivo: Marca um ponto específico dentro de uma transação para possíveis reversão.
* Escopo: Permite reverter apenas para o SavePoint definido, preservando as alterações feitas após ele.
*
Exemplo: `` `SQL
- Inicie uma transação
Iniciar a transação;
- Insira alguns dados
Insira nos clientes (nome, email) valores ('Jane Doe', '
[email protected]');
- Crie um SavePoint
SavePoint MySavePoint;
- Insira mais dados
Inserir em pedidos (valores do cliente, o pedido) (2, '2023-10-28');
- Rollback para o SavePoint
Transação de reversão para MySavePoint;
- Agora, o banco de dados estará de volta ao seu estado após a primeira inserção, mantendo o pedido feito após o SavePoint.
`` `
Resumo: | Recurso | Reversão | SalvePoint |
| --- | --- | --- |
|
propósito | Descanse todas as mudanças na transação atual | Reversão para um ponto específico dentro da transação |
|
escopo | Transação inteira | Ponto específico |
|
resultado | O banco de dados reverte ao seu estado antes da transação | O banco de dados reverte para o estado no SavePoint |
Diferenças -chave: * `Rollback` sem um SavePoint desfaz todas as alterações na transação.
* `Rollback` com um SavePoint reverte o banco de dados para o estado no SavePoint, descartando as alterações feitas após ele.
Quando usar qual: *
reversão: Use quando você deseja descartar todas as alterações em uma transação, normalmente devido a erros ou inconsistências de dados.
*
SavePoint: Use quando você deseja reverter um estado específico dentro de uma transação, preservando as alterações feitas após o SavePoint. Isso é útil para operações complexas nas quais você precisa desfazer partes específicas da transação sem afetar todo o processo.