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