Partilhar via


Transação: Como as transações afetam as atualizações (ODBC)

As atualizações da fonte de dados são gerenciadas durante as transações por meio do uso de um buffer de edição (o mesmo método usado fora das transações). Os membros de dados de campo de um conjunto de registros servem coletivamente como um buffer de edição que contém o registro atual, do qual o conjunto de registros faz backup temporariamente durante um AddNew ou Edit. Durante uma Delete operação, não é feito backup do registro atual em uma transação. Para obter mais informações sobre o buffer de edição e como as atualizações armazenam o registro atual, consulte Recordset: How Recordsets Update Records (ODBC).

Observação

Se tiveres implementado a extração em bloco de linhas, não poderás chamar AddNew, Edit ou Delete. Em vez disso, você deve escrever suas próprias funções para executar atualizações na fonte de dados. Para obter mais informações sobre a busca de linhas em massa, consulte Recordset: Buscando registros em massa (ODBC).

Durante as transações, as operações AddNew, Edit e Delete podem ser confirmadas ou revertidas. Os efeitos de CommitTrans e Rollback podem fazer com que o registo atual não seja restaurado no buffer de edição. Para garantir que o registo atual seja restaurado corretamente, é importante entender como as funções membro CommitTrans e Rollback funcionam com as funções de atualização do CDatabase de CRecordset.

Como o CommitTrans afeta as atualizações

A tabela a seguir explica os efeitos de CommitTrans nas transações.

Como o CommitTrans afeta as atualizações

Funcionamento Estado da fonte de dados
AddNew e Update, e depois CommitTrans Novos registros são adicionados à fonte de dados.
AddNew (sem Update), e depois CommitTrans Novo recorde perdido. Registro não adicionado à fonte de dados.
Edit e Update, e depois CommitTrans Edições aplicadas na fonte de dados.
Edit (sem Update), e depois CommitTrans As edições no registo perdem-se. O registro permanece inalterado na fonte de dados.
Delete então CommitTrans Registros excluídos da fonte de dados.

Como a reversão afeta as transações

A tabela a seguir explica os efeitos de Rollback nas transações.

Como a reversão afeta as transações

Funcionamento Estado do registo atual Você também deve Estado da fonte de dados
AddNew e Update, em seguida, Rollback O conteúdo do registro atual é armazenado temporariamente para abrir espaço para um novo registro. Novo registro é inserido no buffer de edição. Depois que Update é chamado, o registo atual é restaurado para o buffer de edição. A adição à fonte de dados feita por Update é invertida.
AddNew (sem Update), então Rollback O conteúdo do registro atual é armazenado temporariamente para abrir espaço para um novo registro. O buffer de edição contém um novo registro. Ligue AddNew novamente para restaurar o buffer de edição para um novo registro vazio. Ou chame Move(0) para restaurar os valores antigos para o buffer de edição. Como Update não foi chamado, não foram feitas alterações na fonte de dados.
Edit e Update, em seguida, Rollback Uma versão não editada do registro atual é armazenada temporariamente. As edições são feitas no conteúdo do buffer de edição. Após a chamada de Update, a versão não editada do registo ainda é armazenada temporariamente. Dynaset: deslize para fora do registo atual e depois volte para restaurar a versão não editada do registo no buffer de edição.

Instantâneo: LigueRequery para atualizar o conjunto de registros da fonte de dados.
As alterações na fonte de dados feitas por Update são revertidas.
Edit (sem Update), então Rollback Uma versão não editada do registro atual é armazenada temporariamente. As edições são feitas no conteúdo do buffer de edição. Chame Edit novamente para restaurar a versão não editada do registro para o buffer de edição. Como Update não foi chamado, não foram feitas alterações na fonte de dados.
Delete então Rollback O conteúdo do registo atual é eliminado. Chamada Requery para restaurar o conteúdo do registro atual da fonte de dados. A exclusão de dados da fonte de dados é revertida.

Ver também

Transação (ODBC)
Transação: Executando uma transação em um conjunto de registros (ODBC)
Classe CDatabase
Classe CRecordset