Re: [firebase-br] Commit em transações.
Marcelo Silva
marcvan em ig.com.br
Sex Mar 23 08:47:38 -03 2007
Tudo depende de como vc configura o componente de Conexao e Transacao com o
banco
Exemplo: no IBX temos o IBDatabase e o IBTransaction
No IBTransaction temos as propriedades AutoStopAction e DefaultAction
AutoStopAction com a opcao "None" entenderá que numa situacao de erro ele da
um RowBack por default
O DefaulAction normalmente vem com Commit o que em caso de fechamamento da
conexao (fim do aplicativo) ele Commita o que estiver pendurado (levando em
conta o AutoStop que se der erro da o RowBack)
Desta forma sua aplicacao deve estar com RowBack por Default, veja as
propriedades do componente de Transacao
Outra coisa que dificulta um pouco é que seu Commit esta dentro de um Tray
(o que é correto) mas, você deve criar um log no Except para avisar porque a
Transacao nao foi bem sucedida :) assim fica mais facil de debugar
------------------------------------------
Marcelo Silva
msn: marcvan em ig.com.br
11 6723-3106 - TB
11 9693-4251 - CL
------------------------------------------
----- 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