Conjunto de registros: bloqueando registros (ODBC)

Este tópico aplica-se à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 o fetch de linha em massa não foi implementado. Se você implementou a busca de linhas em massa, algumas das informações não se aplicam. Por exemplo, você não pode chamar as funções membro Edit e Update. Para obter mais informações sobre busca de linhas em massa, confira Conjunto de registros: buscando registros em massa (ODBC).

Modos de bloqueio de registro

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ê inicia a operação chamando a função membro Editar.

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

  3. Você encerra a operação (e normalmente confirma a atualização) chamando a função membro Update.

O bloqueio otimista bloqueia o registro na fonte de dados somente durante a chamada Update. Se você usar o bloqueio otimista em um ambiente multiusuário, o aplicativo deverá lidar com uma condição de falha Update. O bloqueio pessimista bloqueia o registro assim que você chama Edit e não o libera até que você chame Update (as falhas são indicadas por meio do mecanismo CDBException, não por um valor de FALSE retornado por Update). O bloqueio pessimista tem uma possível penalidade de desempenho para outros usuários, pois o acesso simultâneo ao mesmo registro pode ter que aguardar até a conclusão do processo do aplicativo Update.

Bloqueio de registros em seu conjunto de registros

Se você quiser alterar o modo de bloqueio de um objeto de conjunto de registros do padrão, precisará 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ê altere-o novamente ou o conjunto de registros seja fechado.

Observação

Relativamente poucos drivers ODBC atualmente dão suporte ao bloqueio pessimista.

Confira também

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