Trabalhar com Banco de Dados, especialmente com muitos registros e múltiplas operações sendo realizadas ao mesmo tempo, pode levar a erros, por exemplo, se dois profissionais estão trabalhando sobre o mesmo conjunto de dados e, por engano, realizam alterações sobre os dados que o colega está produzindo, ou por causa de falhas que levam à queda do sistema enquanto dados estão sendo alterados.
Por sorte, a linguagem SQL conta com recursos poderosos para lidar de forma segura com as operações de dados, eles são COMMIT e ROLLBACK e se baseiam no conceito de transação.
Uma transação é uma unidade de operação que pode ser realizada no Banco de Dados, como uma instrução, uma linha de comandos SQL.
Por exemplo, preciso apagar da minha tabela todos os registros de clientes que moram em Santa Catarina, posso fazer o seguinte:
DELETE FROM minha_tabela WHERE unidade_federacao='SC';
Pronto! Com esse comando é suficiente mas, a tabela tem milhares de registros, é se houver uma queda de energia durante a operação? Os registros serão apagados só parcialmente e isso pode gerar erros no futuro.
Então, essa transação deve ser protegida de falhas utilizando o comando COMMIT.
DELETE FROM table_name WHERE condition;
COMMIT;
O resultado vai ser a geração de uma versão temporária dos dados e, se tudo estiver certo, eles vão substituir os dados originais. Se acontecer qualquer erro no processo, a tabela permanece no estado original e posso tentar de novo quando for conveniente.
Por outro lado, se houver algum problema ou erro durante a transação e você quiser desfazer as alterações feitas até o momento, você pode utilizar o comando ROLLBACK
.
DELETE FROM table_name WHERE condition;
ROLLBACK;
O ROLLBACK
reverte todas as alterações feitas durante a transação.
Mas é importante lembrar que quando utilizar COMMIT, as alterações serão permanentes.
Por outro lado, se não ficarmos satisfeitos com o resultado de uma operação, ou cometermos um erro (deveria ter apagado os registros de clientes do ‘Paraná’!) e NÃO tiver usado COMMIT, posso reverter as alterações com o comando ROLLBACK, ele vai retornar a tabela ao estado anterior, antes de um COMMIT ou ROLLBACK.
Comments are closed