Transações de Rollback
A reversão de uma transação desfaz suas alterações. É possível fazer o rollback de toda a transação atual ou fazer o seu rollback apenas em um ponto de salvamento especificado.
Para reverter a transação atual somente para um ponto de salvamento especificado, você deve usar a instrução ROLLBACK com a cláusula TO SAVEPOINT.
Para fazer ROLLBACK de toda a transação atual, use a instrução ROLLBACK sem a cláusula TO SAVEPOINT ou (no ambiente do SQL Developer) o ícone ROLLBACK Changes.
Fazer rollback de toda a transação atual faz o seguinte:
-
Finaliza a transição
-
Inverte todas as suas alterações
-
Apaga todos os pontos de salvamento
-
Libera os bloqueios das transações
Fazer rollback da transação atual somente no ponto de salvamento especificado faz o seguinte:
-
Não finaliza a transação
-
Inverte apenas as alterações realizadas após o ponto de salvamento especificado
-
Apaga apenas os pontos de salvamento definidos após o ponto de salvamento especificado (excluindo o próprio ponto de salvamento especificado)
-
Libera todos os bloqueios de tabelas e linhas adquiridas após o ponto de salvamento especificado
Outras transações que solicitaram acesso às linhas bloqueadas após o ponto de salvamento especificado devem continuar na espera até que a transação esteja com commit ou o rollback realizados. Outras transações que não solicitaram as linhas podem pedir e acessar as linhas imediatamente.
Para ver o efeito de um rollback no SQL Developer, talvez você precise clicar no ícone Atualizar.
Como resultado do Exemplo 3-7, a tabela REGIONS tem uma região chamada "Oriente Médio e África" e uma região chamada "África". Exemplo 3-8 corrige esse problema (uma transação muito simples) e verifica a alteração, mas, em seguida, faz rollback da transação e verifica o rollback.
Exemplo 3-8 Fazendo Rollback de uma Transação Inteira
Antes da transação:
SELECT * FROM REGIONS
ORDER BY REGION_ID;
Resultado:
REGION_ID REGION_NAME
---------- -------------------------
1 Europe
2 Americas
3 Asia
4 Middle East and Africa
5 Africa
5 rows selected.
Transação (tabela de alterações):
UPDATE REGIONS
SET REGION_NAME = 'Middle East'
WHERE REGION_NAME = 'Middle East and Africa';
Resultado:
1 row updated.
Verificar a alteração:
SELECT * FROM REGIONS
ORDER BY REGION_ID;
Resultado:
REGION_ID REGION_NAME
---------- -------------------------
1 Europe
2 Americas
3 Asia
4 Middle East
5 Africa
5 rows selected.
Fazer o rollback da transação:
ROLLBACK;
Resultado:
Rollback complete.
Verificar o rollback:
SELECT * FROM REGIONS
ORDER BY REGION_ID;
Resultado:
REGION_ID REGION_NAME
---------- -------------------------
1 Europe
2 Americas
3 Asia
4 Middle East and Africa
5 Africa
5 rows selected.
Consulte Também: Referência de Linguagem SQL do Oracle Database para obter informações sobre a instrução ROLLBACK