Pode haver problemas se você não usar transações para assegurar a integridade da base de dados e isto pode ser ilustrado pelo seguinte cenário:
Um usuário, chamado Fred, quer transferir $50 de sua conta poupança para sua conta corrente. Neste caso, a matemática é simples:
Conta corrente = conta corrente + 50
O que aconteceria se houvesse uma falha de algum tipo entre as duas operações?
Neste caso, a conta poupança seria subtraída em $50, mas a conta corrente não seria atualizada. Pobre Fred ficou sem os $50 e existe também a questão do fundo perdido. Espere até a auditoria!
Nós podemos dizer que, neste exemplo, a integridade de dados está extrema prejudicada.
Se uma transação tivesse sido usada para assegurar que as duas operações fossem executadas como uma unidade lógica única, então se houvesse uma falha durante a execução deste simples processo, todo o processo teria sido abortado ou voltado ao seu estado inicial (rolled back - na linguagem SQL) e a integridade dos dados estaria preservada.
Assim o dinheiro, nas contas, retornaria ao valor inicial que estavam antes de iniciar a transação.
Aqui, eu deveria também adicionar o obvio: no cenário acima no qual parecem existir apenas duas operações, existiram realmente mais duas operações:
Ler o saldo da conta poupança
Ler o saldo da conta corrente
Isto é, sem considerar as modificações reais ao banco de dados.
Nenhum comentário:
Postar um comentário