Fórum Encadear Transações #49306

10/02/2005

0

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

Responder

Posts

10/02/2005

Renato_sp

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]


Responder

Gostei + 0

10/02/2005

Tuskinhu

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?


Responder

Gostei + 0

11/02/2005

Afarias

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.


Responder

Gostei + 0

11/02/2005

Tuskinhu

Obrigado pela ajuda!!


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar