Commit no Interbase
estou com alguns problemas com o interbase, por exemplo, qdo
acesso uma aplicação desenvolvida em Delphi 5, executo várias transações, inserção de novos dados, updates de dados...
mas se dá uma queda de energia, ou trava o PC tudos o q fiz, ou seja
tudo o q gravei vai por áqua à baixo, perco tudo.
Apesar de q dentro da aplicação é executado table.post, em todas as gravações no banco, pelo q entendi se ele não achar Application.Terminate, finalização da aplicação corretamente, é feito rollback de tudo o q foi feito naquele instante. Tem com evitar isso?
acesso uma aplicação desenvolvida em Delphi 5, executo várias transações, inserção de novos dados, updates de dados...
mas se dá uma queda de energia, ou trava o PC tudos o q fiz, ou seja
tudo o q gravei vai por áqua à baixo, perco tudo.
Apesar de q dentro da aplicação é executado table.post, em todas as gravações no banco, pelo q entendi se ele não achar Application.Terminate, finalização da aplicação corretamente, é feito rollback de tudo o q foi feito naquele instante. Tem com evitar isso?
Fcampos
Curtidas 0
Respostas
Afarias
28/08/2003
|qdo acesso uma aplicação desenvolvida em Delphi 5, executo várias
|transações, inserção de novos dados, updates de dados...
|mas se dá uma queda de energia, ou trava o PC tudos o q fiz, {...}
Um POST não confirma as operações e então estas são perdidas. Vc tem q executar um COMMIT na transação para tornar suas operações ´gravadas´ no banco de dados.
Vc pode definir a propriedade DefaultAction do IBTransaction para Commit -- assim, quando o objeto for destruido ele dá um COMMIT em vez do Rollback -- entretanto isso não ocorre quando o micro TRAVA ou FALTA energia -- para esses casos não há software q dê geito -- só um Nobreak e um micro bem configurado para resolver.
T+
|transações, inserção de novos dados, updates de dados...
|mas se dá uma queda de energia, ou trava o PC tudos o q fiz, {...}
Um POST não confirma as operações e então estas são perdidas. Vc tem q executar um COMMIT na transação para tornar suas operações ´gravadas´ no banco de dados.
Vc pode definir a propriedade DefaultAction do IBTransaction para Commit -- assim, quando o objeto for destruido ele dá um COMMIT em vez do Rollback -- entretanto isso não ocorre quando o micro TRAVA ou FALTA energia -- para esses casos não há software q dê geito -- só um Nobreak e um micro bem configurado para resolver.
T+
GOSTEI 0
Maicon Loffi
28/08/2003
Amigo,
Quando você grava, altera ou deleta algum registro, você deve fazer o seguinte.
Nos Eventos AfterDelete e AfterPost se estiver usando o IBQuery Faça
TIBQuery(DataSet).Transaction.CommitRetaining;
Caso for o TIBDataSet então
TIBDataSet(DataSet).Transaction.CommitRetaining;
Aí automaticamente a cada Modificação da base de dados será atualizado.
Quando você grava, altera ou deleta algum registro, você deve fazer o seguinte.
Nos Eventos AfterDelete e AfterPost se estiver usando o IBQuery Faça
TIBQuery(DataSet).Transaction.CommitRetaining;
Caso for o TIBDataSet então
TIBDataSet(DataSet).Transaction.CommitRetaining;
Aí automaticamente a cada Modificação da base de dados será atualizado.
GOSTEI 0