Como retornar um update feito sem querer em um banco Oracle?

Você conhece o Rollback em Bancos transacionais? É uma mão na roda, quando se precisa recuperar algo que você fez e se arrependeu, como alteração dem vários campos com valores errados, ou até mesmo excluiu um ou mais registros e deu COMMIT. Sim, você pode recuperar os dados…

É uma tarefa muito simples, basta fazer um select normalmente na  tabela,  com os campos e condições que você quer e, no FROM, após o nome da tabela, colocar “as of timestamp systimestamp – interval ‘X’ minute“, onde esse “X” é o tempo que passou desde a a besteira que  fez até agora.

Veja a seguinte situação hipotética:

Imagine que se tenha uma tabela CLIENTE e você atualiza os clientes que não fazem compras há mais de 1 mês para Inativos. Você faz isso com um update,  atualizando o campo STATUS_CLIENTE para “I”, de inativo,  depois de fazer um select que retorna os  clientes que não compraram no último mês.

Após a execução do update (COMMIT), alguns clientes estavam com o STATUS “A” de Ativo, “D” de Devedor, “V” de VIP. Passa 30 minutos seu chefe entra na sala, e lhe fala que esse update não pode ser feito em clientes VIP, e agora? Faz assim:
[sql]
select ID_CLIENTE
from CLIENTE
as of timestamp systimestamp – interval ’30’ minute
where STATUS_CLIENTE = ‘V’;
[/sql]

PRONTO! Peguei todo mundo que tava com o campo STATUS_CLIENTE = ‘V’ 30 minutos atrás. Com os IDs, é possível fazer um novo  update, passando esse pessoal que  está com o STATUS = ‘I’, pra ‘V’.

Via: Estação ZEN

Leave a Reply

Your email address will not be published. Required fields are marked *