Re: [firebase-br] Commit em transações.
Eduardo Jedliczka (TeamFB)
jedyfb em gmail.com
Qui Mar 22 20:54:55 -03 2007
Magno,
Já vi esta pergunta várias vezes aqui na lista, e ela tem muito a ver com
Delphi e pouco com FireBird.
Mas vamos lá.
Quando o sistema é abortado (em algumas versões do Zeos 6.5.1 dá para mudar
isto) por uma mensagem de erro, TODAS as transações pendentes soferão um
ROLLBACK.
Isto é especialmente problemático para aqueles que tem um péssimo hábito de
ter uma única transação startada no início do aplicativo e finalizada apenas
ao concluir o mesmo, pois se a pessoa digitar 5 mil notas num dia e o
sistema travar, ele não terá nenhuma nota cadastrada no sistema.
Sendo assim, seu cliente lhe reportou uma situação mentirosa!!! Pois, os
dados que ele perdeu não foram depois do primeiro problema, e sim ANTES do
segundo problema (talvez ele tenha matado seu programa com CTRL+ALT+DEL ou
tenha resetado o servidor sem querer).
espero que tenha entendido....
Sucesso,
Eduardo Jedliczka
Membro do TeamFB
----- Original Message -----
From: "Magno System" <magno em speet.com.br>
To: "FireBase" <lista em firebase.com.br>
Sent: Thursday, March 22, 2007 6:43 PM
Subject: [firebase-br] Commit em transações.
Pessoal, é o seguinte: recentemente fiz uma mudança no meu programa onde ao
commitar uma transação eu faço assim:
Try
Transacao.commit
Except
Transacao.Rollback;
Antes eu só executava a transacao.commit fora do try, ou seja quando dava
algum erro de execução da procedure o rollback não era chamado. Minhas duas
dúvidas são as seguintes.
1 -O Firebird executa o rollback automaticamente, se houver algum erro na
transação e você não der explicitamente um rollback ?
2 - Houve caso com dois clientes em que deu um erro de execução numa
procedure. Ele fechou o programa e abriu de novo. Trabalhou normalmente. No
outro dia ele disse que todo o conteúdo registrado após o erro da procedure
não havia sido gravado. A impressão que tenho é que de por algum motivo após
o erro, os dados não foram commitados. Será que existe a possibilidade deste
dados não terem sido gravados devido a falta de um rollback quando ocorreu o
erro na execução da procedure ?
Uso o componente Zeos 6.5.1, Servidor Windows XP Professional, Estações
Windows 98 (nos dois clientes).
______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
Para editar sua configuração na lista, use o endereço
http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
Para consultar mensagens antigas: http://firebase.com.br/pesquisa
Mais detalhes sobre a lista de discussão lista