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