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:
Você inicia a operação chamando a função membro Editar.
Você altera os campos apropriados do registro atual.
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
- Chame a função membro SetLockingMode, especificando
CRecordset::pessimistic
ouCRecordset::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)