Compartilhar via


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