Transação (ODBC)
Este tópico se aplica a classes MFC ODBC.
Uma transação é uma maneira de grupo ou lote, uma série de atualizações para uma fonte de dados para que todos são confirmados ao mesmo tempo ou nenhum está comprometida se você reverter a transação.Se você não usar uma transação, as alterações na fonte de dados são confirmadas automaticamente em vez de serem submetidos sob demanda.
Observação |
---|
Nem todos os drivers ODBC de banco de dados oferecer suporte a transações.Chamar o CanTransact função de membro de sua incorporadas ou CRecordset objeto para determinar se o driver oferece suporte a transações para um determinado banco de dados.Observe que CanTransact não informar se a fonte de dados oferece suporte a transações completas.Você também deve chamar CDatabase::GetCursorCommitBehavior e CDatabase::GetCursorRollbackBehavior depois de CommitTrans e reversão para verificar o efeito da transação em abrir CRecordset objeto. |
Chamadas para o AddNew e Editar funções de membro de um CRecordset objeto afetam a fonte de dados imediatamente quando você chamar atualização.Excluir chamadas também têm efeito imediatamente.Por outro lado, você pode usar uma transação consistindo em várias chamadas para AddNew, Editar, atualização, e Excluir, que são executadas, mas não confirmadas até que você chamar CommitTrans explicitamente.Estabelecendo uma transação, você pode executar uma série de tais chamadas, mantendo a capacidade de revertê-los.Se um recurso crítico estiver disponível ou alguma outra condição impede que toda transação seja concluída, você pode reverter a transação em vez de confirmá-lo.Nesse caso, nenhuma das alterações pertencentes à transação afetam a fonte de dados.
Observação |
---|
Atualmente, a classe CRecordset não oferece suporte a atualizações de fonte de dados se tiver implementado em massa linha buscando.Isso significa que você não pode fazer chamadas para AddNew, Editar, Excluir, ou atualização.No entanto, você pode escrever funções próprias para executar atualizações e chamar essas funções dentro de uma determinada transação.Para obter mais informações sobre a busca de linha em massa, consulte Recordset: buscar registros em massa (ODBC). |
Observação |
---|
Além de afetar seu conjunto de registros, transações afetam instruções de SQL executar diretamente contanto que você use o ODBC HDBC associados a CDatabase objeto ou ODBC HSTMT com base no que HDBC. |
As transações são particularmente úteis quando você tem vários registros devem ser atualizados simultaneamente.Nesse caso, você deseja evitar uma transação concluída pela metade, como pode acontecer se uma exceção foi lançada antes que a última atualização foi feita.Agrupamento essas atualizações em uma transação permite uma recuperação (rollback) as alterações e retorna os registros para o estado pretransaction.Por exemplo, se um banco transfere dinheiro da conta a conta B, tanto a retirada de um e o depósito a b deve ter êxito para processar os fundos corretamente ou toda a transação deve falhar.
As classes de banco de dados, você realizar transações por meio de CDatabase objetos.A CDatabase objeto representa uma conexão com uma fonte de dados e um ou mais conjuntos de registros associados que CDatabase objeto operam nas tabelas do banco de dados através de funções de membro do conjunto de registros.
Observação |
---|
Há suporte para apenas um nível de transações.Não é possível aninhar transações nem uma transação ocupar vários objetos de banco de dados. |
Os tópicos a seguir fornecem mais informações sobre como as transações são realizadas: