Encadear Transações
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
Curtidas 0
Respostas
Renato_sp
10/02/2005
Bom nao sei que tipo de componente de acesso esta utilizando eu costumo colocar mais ou menos assim
Pode ser que o pessoal do forum utiliza outro metodo, este tenho utilizado e nao tem me trazido problemas.
Falow
Renato / SP
[/code]
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
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?
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
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.
inicia a transação;
altera tabela 1
altera tabela 2
altera tabela 3
commit
se erro
rollback
é isso.
GOSTEI 0
Tuskinhu
10/02/2005
Obrigado pela ajuda!!
GOSTEI 0