Função JetUpdate2
Aplica-se a: Windows | Windows Server
Função JetUpdate2
A função JetUpdate2 executa uma operação de atualização, incluindo a inserção de uma nova linha em uma tabela ou a atualização de uma linha existente. Essa função contém uma lista de opções de grbit que podem ser definidas durante a execução de uma atualização. A exclusão de uma linha de tabela é executada chamando JetDelete.
Windows Server 2003: JetUpdate2 é introduzido no Windows Server 2003.
JetUpdate2 é a etapa final na execução de uma inserção ou uma atualização. A atualização é iniciada chamando JetPrepareUpdate e, em seguida, chamando JetSetColumn ou JetSetColumns uma ou mais vezes para definir o estado do registro. Por fim, JetUpdate2 é chamado para concluir a operação de atualização. Os índices são atualizados apenas por JetUpdate ou JetUpdate2, e não durante JetSetColumn ou JetSetColumns.
JET_ERR JET_API JetUpdate2(
__in JET_SESID sesid,
__in JET_TABLEID tableid,
__out_opt void* pvBookmark,
__in unsigned long cbBookmark,
__out_opt unsigned long* pcbActual,
__in const JET_GRBIT grbit
);
Parâmetros
sesid
A sessão a ser usada para essa chamada.
Tableid
O cursor a ser usado para essa chamada.
pvBookmark
Ponteiro para um indicador retornado para uma linha inserida.
cbBookmark
Tamanho do buffer apontado por pvBookmark.
pcbActual
O tamanho retornado do indicador para a linha inserida retornada em pvBookmark.
grbit
Um grupo de bits que contém as opções a serem usadas para essa chamada, que incluem zero ou mais dos seguintes.
Valor |
Significado |
---|---|
JET_bitUpdateCheckESE97Compatibility |
Esse sinalizador faz com que a atualização retorne um erro se a atualização não tivesse sido possível na versão do Windows 2000 do ESE, o que impôs um número máximo menor de instâncias de coluna com valores múltiplos em cada registro do que as versões posteriores do ESE. Isso é importante apenas para aplicativos que desejam replicar dados entre aplicativos hospedados no Windows 2000 e aplicativos hospedados no Windows Server 2003 ou versões posteriores do ESE. Não deve ser necessário para a maioria dos aplicativos. |
Valor Retornado
Essa função retorna o tipo de dados JET_ERR com um dos seguintes códigos de retorno. Para obter mais informações sobre os possíveis erros de ESE, consulte Erros extensíveis do mecanismo de armazenamento e parâmetros de tratamento de erros.
Código de retorno |
Descrição |
---|---|
JET_errSuccess |
A operação foi concluída com sucesso. |
JET_errBufferTooSmall |
O buffer fornecido para o indicador de registro não é suficientemente grande o suficiente para armazenar o indicador de registro. |
JET_errClientRequestToStopJetService |
Não é possível concluir a operação porque todas as atividades na instância associada à sessão cessaram como resultado de uma chamada para JetStopService. |
JET_errDiskFull |
A operação de atualização requer o crescimento do arquivo de banco de dados ou a alocação de arquivos de log, mas a unidade de disco em que reside o arquivo de banco de dados ou a série de logs está cheia. Como alternativa, o arquivo de banco de dados está em um volume formatado em FAT32 e o arquivo de banco de dados já é 4GBytes, o limite por arquivo para FAT32. |
JET_errInstanceUnavailable |
Não é possível concluir a operação porque a instância associada à sessão encontrou um erro fatal que exige que o acesso a todos os dados seja revogado para proteger a integridade desses dados. Windows XP: Esse erro só será retornado pelo Windows XP e versões posteriores. |
JET_errInvalidParameter |
O parâmetro de preparação especificado na função JetPrepareUpdate não é um sinalizador válido. |
JET_errKeyDuplicate |
Uma chave de índice para esse registro é uma duplicata de outra chave de índice para outro registro que já está na tabela e o índice não permite duplicatas. |
JET_errKeyTruncated |
O registro inserido ou atualizado tem um ou mais índices para os quais a chave gerada teria excedido o tamanho máximo permitido. Como resultado, a operação falhou ao impedir o truncamento de chave. |
JET_errMultiValuedIndexViolation |
O registro inserido ou atualizado tem uma coluna de vários valores indexada com dois ou mais valores idênticos dentro do tamanho máximo da chave definido para o índice. Como resultado, o registro tem duas entradas idênticas no índice, o que é inválido. |
JET_errNotInitialized |
Não é possível concluir a operação porque a instância associada à sessão ainda não foi inicializada. |
JET_errNullInvalid |
Uma ou mais colunas no registro a ser inserido ou no estado atualizado de um registro que está sendo substituído é NULL , o que viola a restrição definida para essas colunas. |
JET_errNullKeyDisallowed |
Um ou mais índices são definidos para não permitir uma chave NULL e o estado inserido ou atualizado de um registro que está sendo substituído viola essa restrição definida. |
JET_errRecordPrimaryChanged |
Uma operação de substituição de registro atualizou a chave primária. Atualizações para colunas de chave primária devem ser feitas por meio da exclusão do registro existente e da inserção de um novo registro com os dados desejados. |
JET_errRestoreInProgress |
Não é possível concluir a operação porque uma operação de restauração está em andamento na instância associada à sessão. |
JET_errSessionSharingViolation |
A mesma sessão não pode ser usada para mais de um thread ao mesmo tempo. Windows XP: Esse erro só será retornado pelo Windows XP e versões posteriores. |
JET_errTermInProgress |
Não é possível concluir a operação porque a instância associada à sessão está sendo desligada. |
JET_errUpdateNotPrepared |
JetPrepareUpdate foi chamado com JET_prepCancel mas o cursor não estava no estado preparado. |
JET_errWriteConflict |
Uma operação de substituição de registro para a qual um bloqueio de gravação ainda não foi alocado pode encontrar um conflito de gravação no momento da atualização. |
Em caso de êxito, a operação de atualização aberta no cursor é concluída. Se uma coluna de incremento automático for definida para a tabela, esse valor será definido para registros inseridos. Se uma coluna de versão for definida para a tabela, seu valor será inicializado para registros recém-inseridos ou incrementado sempre que um registro for substituído. Todos os índices, incluindo índices clusterizados e não clusterizados, são atualizados.
Em caso de falha, nenhuma alteração de qualquer tipo é feita no banco de dados. Antes de inserir e antes de substituir, as funções de retorno de chamada podem ter sido chamadas, mas após inserir e depois de substituir, os retornos de chamada não serão chamados, pois este último não pode causar uma falha na atualização. O buffer de cópia do cursor é deixado em seu estado preparado, de modo que exista a oportunidade de corrigir incrementalmente os problemas que causaram erros e repetir a operação de atualização.
Comentários
As limitações de tamanho do registro são impostas por JetSetColumn e não em geral pelo JetUpdate. A única exceção é quando o sinalizador de compatibilidade JET_bitUpdateCheckESE97Compatibility está sendo usado. Nesse caso, todo o registro é verificado, pois uma operação JetSetColumn individual que excedeu o limite pode ser compensada por uma chamada subsequente para JetSetColumn.
Consulte a seção Comentários em JetUpdate para obter mais informações.
Requisitos
Requisito | Valor |
---|---|
Cliente |
Requer o Windows Vista. |
Servidor |
Requer o Windows Server 2008 ou o Windows Server 2003. |
Cabeçalho |
Declarado em Esent.h. |
Biblioteca |
Use ESENT.lib. |
DLL |
Requer ESENT.dll. |
Consulte Também
JET_ERR
JET_SESID
JET_TABLEID
JetDelete
JetPrepareUpdate
JetRegisterCallback
JetRetrieveColumn
JetRetrieveColumns
JetSetColumn
JetSetColumns