Firebird X DBExpress
Quando executamos applyupdates(-1) estamos encerrando uma transação?
Earmarques
Curtidas 0
Respostas
Hjmarcon
10/03/2007
Não.
Você vai fechar a transação somente com comitt ou rollback.
O applyupdates faz com que os registros que estiverem nas tabelas sendo manipuladas sejam consistidos, ou seja, gravados efetivamente no banco.
Porém, se este applyupdates estiver dentro de uma transação e voce não der commit, quando voce fechar a conexão os dados serão perdidos, mesmo que já tenham sido consistidos.
Você vai fechar a transação somente com comitt ou rollback.
O applyupdates faz com que os registros que estiverem nas tabelas sendo manipuladas sejam consistidos, ou seja, gravados efetivamente no banco.
Porém, se este applyupdates estiver dentro de uma transação e voce não der commit, quando voce fechar a conexão os dados serão perdidos, mesmo que já tenham sido consistidos.
GOSTEI 0
Earmarques
10/03/2007
No caso eu utilizo dbexpress e não inicio transação manualmente não. Nesse caso o applyupdates é bastante? Pergunto isso por que estou com um banco que ao ser restaurado fica em torno de 30mb e no final do dia está com + - 130mb. Estava achando que fosse por causa de transações pendentes, mas não então.
GOSTEI 0
Lfer
10/03/2007
Correto. Se você não iniciar uma transação manualmente, ao dar ApplyUpdates você salva permanentemente os dados no banco.
GOSTEI 0
Rodolpho123
10/03/2007
Quando vc chama o método AppyUpdates, os dados do ClientDataSet são enviados ao DataProvider, que envia ao MIDAS e o mesmo se encarrega de executar o parse (escrever as linhas de insert, update e delete) para fazer as alterações no BD. Internamente é aberta uma transação e se não houver nenhum erro a transação é comitada, caso contrário é feito o Rollback. É claro que isso só é válido quando vc não chama o método sem iniciar uma transação....
GOSTEI 0