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