Compartilhar via


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

Atualizações da fonte de dados são gerenciadas durante 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, que o conjunto de registros faz backup temporariamente durante um AddNew ou Edit. Durante uma operação Delete, o registro atual não é feito em backup dentro de uma transação. Para obter mais informações sobre o buffer de edição e como as atualizações armazenam o registro atual, consulte Conjunto de registros: como conjuntos de registros atualizam registros (ODBC).

Observação

Se você implementou efetuar fetch em massa de linhas, não será possível chamar AddNew, Edit ou Delete. Em vez disso, você deverá escrever suas próprias funções para executar atualizações na fonte de dados. Para obter mais informações sobre busca de linhas em massa, confira Conjunto de registros: buscando registros em massa (ODBC).

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

Como o CommitTrans afeta Atualizações

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

Como o CommitTrans afeta Atualizações

Operação Status da fonte de dados
AddNew e Update, em seguida, CommitTrans Novos registros são adicionados à fonte de dados.
AddNew (sem Update) e, em seguida, CommitTrans Novo registro é perdido. Registro não adicionado à fonte de dados.
Edit e Update, em seguida, CommitTrans Edições confirmadas na fonte de dados.
Edit (sem Update) e, em seguida, CommitTrans As edições para o registro são perdidas. O registro permanece inalterado na fonte de dados.
Delete e, em seguida CommitTrans Registros excluídos da fonte de dados.

Como a reversão afeta transações

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

Como a reversão afeta transações

Operação Status do registro atual Também é necessário que você Status 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. O novo registro é inserido no buffer de edição. Depois de Update ser chamado, o registro atual é restaurado para o buffer de edição. A adição à fonte de dados feita por Update é revertida.
AddNew (sem Update), em seguida Rollback O conteúdo do registro atual é armazenado temporariamente para abrir espaço para um novo registro. Editar buffer contém novo registro. Chame 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 houve alterações feitas 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. Depois Update de ser chamada, a versão não editada do registro ainda é armazenada temporariamente. Dynaset: Role para fora do registro atual e, em seguida, volte para restaurar a versão não editada do registro para o buffer de edição.

Instantâneo: Chamar Requery 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), 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. 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 houve alterações feitas na fonte de dados.
Delete e, em seguida Rollback O conteúdo do registro atual é excluído. Chame Requery para restaurar o conteúdo do registro atual da fonte de dados. A exclusão de dados da fonte de dados é revertida.

Confira também

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