Partilhar via


Conjunto de dados: Bloqueio de Registos (ODBC)

Este tópico se aplica às classes ODBC do MFC.

Este tópico explica:

Quando você usa um conjunto de registros para atualizar um registro na fonte de dados, seu aplicativo pode bloquear o registro para que nenhum outro usuário possa atualizar o registro ao mesmo tempo. O estado de um registro atualizado por dois usuários ao mesmo tempo é indefinido, a menos que o sistema possa garantir que dois usuários não possam atualizar um registro simultaneamente.

Observação

Este tópico aplica-se a objetos derivados de CRecordset nos quais a busca de linhas em massa não foi implementada. Se tiver implementado a extração em lote de linhas, algumas das informações não se aplicam. Por exemplo, não é possível chamar as funções membro Edit e Update. Para obter mais informações sobre a busca de linhas em massa, consulte Recordset: Buscando registros em massa (ODBC).

Record-Locking Modos

As classes de banco de dados fornecem dois modos de bloqueio de registro:

  • Bloqueio otimista (o padrão)

  • Bloqueio pessimista

A atualização de um registro ocorre em três etapas:

  1. Você começa a operação chamando a função membro Editar.

  2. Você altera os campos apropriados do registo atual.

  3. Você termina a operação — e normalmente confirma a atualização — chamando a função de membro Atualizar .

O bloqueio otimista bloqueia o registro na fonte de dados somente durante a Update chamada. Se utilizar o bloqueio otimista num ambiente multiutilizador, o aplicativo deverá gerir uma condição de Update falha. O bloqueio pessimista bloqueia o registo assim que você chama Edit e não o libera até que você chame Update (falhas são indicadas por meio do mecanismo CDBException, não por um valor FALSE retornado por Update). O bloqueio pessimista pode prejudicar o desempenho para outros utilizadores, pois o acesso simultâneo ao mesmo registo pode ter que aguardar até à conclusão do processo da sua aplicação.

Bloqueando registros em seu conjunto de registros

Se desejar alterar o modo de bloqueio padrão de um objeto de conjunto de registos, deve alterar o modo antes de chamar Edit.

Para alterar o modo de bloqueio atual do conjunto de registros

  1. Chame a função membro SetLockingMode, especificando CRecordset::pessimistic ou CRecordset::optimistic.

O novo modo de bloqueio permanece em vigor até que você o altere novamente ou o conjunto de registros seja fechado.

Observação

Atualmente, relativamente poucos drivers ODBC suportam bloqueio pessimista.

Ver também

Conjunto de registros (ODBC)
Conjunto de registros: Executando uma junção (ODBC)
Conjunto de registros: Adicionando, atualizando e excluindo registros (ODBC)