Encadear Transações

Firebird

10/02/2005

Tenho uma tabela pai e 2 filhas, como encadear as transações delas para que qdo uma 3 falhar acontecer um rollback em todas ?


Tuskinhu

Tuskinhu

Curtidas 0

Respostas

Renato_sp

Renato_sp

10/02/2005

Bom nao sei que tipo de componente de acesso esta utilizando eu costumo colocar mais ou menos assim

   try
      Inicia transation;
      Comandos manipulacao;
      Commit;
   except
       Mensagem de erro;     
       Rollback;
   end;


Pode ser que o pessoal do forum utiliza outro metodo, este tenho utilizado e nao tem me trazido problemas.

Falow
Renato / SP


[/code]


GOSTEI 0
Tuskinhu

Tuskinhu

10/02/2005

Eu uso Firebird/DBExpress com D7

algo do tipo


Qr1.SQL.Text := ´insert ...tabela1´;
ExecSQL;
Qr2.SQL.Text := ´insert ... tabela2´;
ExecSQL;
SQLCOnnection.Commit(TrTab1);
SQLCOnnection.Commit(TrTab2);

algo do tipo... nesse caso.. se ocorrer um erro no commit da Tab2 ele já teria passado pelo commit da Tab1, como faço pra nao acontecer isso, ja que ao meu ver pode estar comitado a Tab1 e a Tab2 nao foi...
Como resolvo?


GOSTEI 0
Afarias

Afarias

10/02/2005

coloque todas as tabelas NA MESMA transação, então faça como o Renato falou:

inicia a transação;

altera tabela 1
altera tabela 2
altera tabela 3

commit

se erro

rollback


é isso.


GOSTEI 0
Tuskinhu

Tuskinhu

10/02/2005

Obrigado pela ajuda!!


GOSTEI 0
POSTAR