Compartilhar via


Função JetCreateTableColumnIndex3

Aplica-se a: Windows | Windows Server

Função JetCreateTableColumnIndex3

A função JetCreateTableColumnIndex3 cria uma tabela em um banco de dados ESE com um conjunto inicial de índices e um conjunto inicial de colunas de uma matriz de estruturas JET_TABLECREATE3 . A estrutura JET_TABLECREATE3 permite que uma função de retorno de chamada seja especificada.

O Windows 7:JetCreateTableColumnIndex3 é introduzido no sistema operacional Windows 7.

    JET_ERR JET_API JetCreateTableColumnIndex3(
      __in          JET_SESID sesid,
      __in          JET_DBID dbid,
      __in_out      JET_TABLECREATE3* ptablecreate
    );

Parâmetros

sesid

O contexto de sessão de banco de dados a ser usado para a chamada à API.

dbid

O identificador de banco de dados a ser usado para a chamada à API.

ptablecreate

Um ponteiro para uma estrutura JET_TABLECREATE3 que define a tabela a ser criada. Consulte JET_TABLECREATE3 para obter mais detalhes.

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 do 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_errCallbackNotResolved

A função de retorno de chamada não pôde ser resolvida. A DLL pode não ter sido encontrada ou a função na DLL pode não ter sido encontrada. Com log suficiente habilitado, o log de eventos fornecerá mais detalhes.

JET_errCannotIndex

Foi feita uma tentativa de indexar em uma coluna SLV ou atualização de escrow (observe que as colunas SLV foram preteridas).

JET_errCannotNestDDL

Se ptablecreate-grbit> especificar JET_bitTableCreateTemplateTable, mas ptablecreate-szTemplateTableName> será definido como NULL.

JET_errColumnDuplicate

Uma coluna já existe.

JET_errColumnNotFound

Foi feita uma tentativa de indexação em uma coluna inexistente. Tentar indexar condicionalmente em uma coluna inexistente também pode produzir esse erro.

JET_errColumnRedundant

Foi feita uma tentativa de adicionar uma coluna redundante. Não deve haver mais de uma coluna decremento automático e não mais do que uma coluna de versão por tabela.

JET_errDensityInvalid

Esse erro será retornado se o membro ulDensity da estrutura JET_INDEXCREATE2 estiver definido como um número menor que 20 ou mais de 100.

JET_errDDLNotInheritable

Significa que a tabela nomeada no membro szTemplateTableName da estrutura JET_TABLECREATE3 não foi marcada como uma tabela de modelo (ou seja, essa tabela não tinha JET_bitTableCreateTemplateTable definida).

JET_errIndexDuplicate

Foi feita uma tentativa de definir dois índices idênticos.

JET_errIndexHasPrimary

Foi feita uma tentativa de especificar mais de um índice primário para uma tabela. Uma tabela deve ter exatamente um índice primário. Se nenhum índice primário for especificado, o mecanismo de banco de dados criará um de forma transparente.

JET_errIndexInvalidDef

Uma definição de índice inválida foi especificada. Veja a seguir alguns dos possíveis motivos para receber este erro:

  • Um índice primário é condicional (ou seja, o membro grbit da estrutura JET_INDEXCREATE2 tem JET_bitIndexPrimary definido e cConditionalColumn membro da estrutura JET_INDEXCREATE2 é maior que zero).

  • Windows Server 2003 e versões posteriores do Windows. Tentando criar um índice de tupla com limites de tupla, mas sem passar o membro ptuplelimits na estrutura JET_INDEXCREATE2 (ou seja, o membro grbit da estrutura JET_INDEXCREATE2 tem JET_bitIndexTupleLimits definido, mas o ponteiro ptuplelimits é NULL).

  • Passando uma definição de chave inválida no membro szKey da estrutura JET_INDEXCREATE2 . Consulte JET_INDEXCREATE2 para obter uma discussão sobre definições válidas.

  • Definir o membro cbVarSegMac em JET_INDEXCREATE2 ser maior que JET_cbPrimaryKeyMost (para um índice primário) ou maior que JET_cbSecondaryKeyMost (para um índice secundário).

  • Passando uma combinação inválida para um índice Unicode definido pelo usuário (que tem o JET_bitIndexUnicode bit definido no membro grbit de JET_INDEXCREATE2). Algumas causas comuns incluem o membro pidxunicode da estrutura JET_INDEXCREATE2 é NULL ou o LCID especificado na estrutura pidxunicode é inválido.

  • Especificando uma coluna com vários valores para um índice primário.

  • Tentando indexar muitas colunas condicionais. O membro cConditionalColumn da estrutura JET_INDEXCREATE2 não deve ser maior que JET_ccolKeyMost.

JET_errIndexTuplesInvalidLimits

Windows XP e versões posteriores do Windows. Uma estrutura JET_TUPLELIMITS foi especificada e não há suporte para seus limites. Consulte a seção comentários da estrutura JET_TUPLELIMITS .

JET_errIndexTuplesNonUniqueOnly

Windows XP e versões posteriores do Windows. Um índice de tupla não pode ser exclusivo (ou seja, o membro grbit da estrutura JET_INDEXCREATE2 não deve ter JET_bitIndexPrimary e JET_bitIndexUnique definidos).

JET_errIndexTuplesOneColumnOnly

Windows XP e versões posteriores do Windows. Um índice de tupla só poderá ser sobre uma única coluna (ou seja, se o membro grbit da estrutura JET_INDEXCREATE2 tiver JET_bitIndexTuples definido e o membro szKey da estrutura JET_INDEXCREATE2 especificar mais de uma coluna).

JET_errIndexTuplesSecondaryIndexOnly

Windows XP e versões posteriores do Windows. Um índice de tupla não pode ser um índice primário (ou seja, o membro grbit da estrutura JET_INDEXCREATE2 não deve ter JET_bitIndexPrimary e JET_bitIndexTuples definidos).

JET_errIndexTuplesTextColumnsOnly

Windows XP e versões posteriores do Windows. Um índice de tupla só pode estar em um texto ou coluna Unicode. Uma tentativa de indexar outras colunas (como colunas binárias) resultará em JET_errIndexTuplesTextColumnsOnly.

JET_errIndexTuplesVarSegMacNotAllowed

Windows XP e versões posteriores do Windows. Um índice de tupla não permite que o membro cbVarSegMac da estrutura JET_INDEXCREATE2 seja definido.

JET_errInTransaction

Foi feita uma tentativa de criar um índice sem informações de versão durante uma transação.

JET_errInvalidCodePage

O membro cp da estrutura JET_COLUMNCREATE não foi definido como uma página de código válida. Os únicos valores válidos para colunas de texto são inglês (1252) e Unicode (1200). Um valor igual a 0 significa que o padrão será usado (inglês, 1252).

JET_errInvalidColumnType

O membro coltyp da estrutura JET_COLUMNCREATE não foi definido como um tipo de coluna válido.

JET_errInvalidCreateIndex

Veja a seguir alguns motivos pelos quais esse erro pode ocorrer:

  • O membro rgindexcreate da estrutura JET_TABLECREATE2 foi definido como NULL.

  • O membro rgcolumncreate da estrutura JET_TABLECREATE2 foi definido como NULL.

  • O membro cbStruct de uma estrutura JET_INDEXCREATE2 não foi definido como um valor válido.

JET_errInvalidgrbit

Uma combinação inválida de membros grbit foi especificada em JET_TABLECREATE3.

A definição de índice é inválida porque o membro grbit contém valores inconsistentes. Veja a seguir alguns possíveis motivos:

  • Um índice primário tinha um bit de ignorar especificado (ou seja, JET_bitIndexPrimary foi passado com JET_bitIndexIgnoreNull, JET_bitIndexIgnoreAnyNull ou JET_bitIndexIgnoreFirstNull).

  • Um índice vazio não ignora nenhum membro NULL (ou seja, o membro grbit da estrutura JET_INDEXCREATE2 tem JET_bitIndexEmpty definido, mas não tem JET_bitIndexIgnoreAnyNull definido).

  • Passar uma estrutura JET_CONDITIONALCOLUMN com um membro grbit inválido.

JET_errInvalidLanguageId

Uma LCID (ID de Localidade) inválida foi passada (por meio do membro lcid da estrutura JET_UNICODEINDEX que é apontada pelo membro pidxunicode na estrutura JET_INDEXCREATE2 ou pelo campo lcid da estrutura JET_INDEXCREATE2 ).

JET_errInvalidParameter

Um parâmetro inválido foi dado. Veja a seguir alguns possíveis motivos:

JET_errRecordTooBig

O disco é muito grande. A soma do membro cbMax da estrutura JET_COLUMNCREATE para todas as colunas fixas não deve exceder um determinado valor.

JET_errTableDuplicate

A tabela já existe.

JET_errTooManyColumns

Foi feita uma tentativa de adicionar muitas colunas à tabela. Uma tabela não pode ter mais do que JET_ccolFixedMost colunas fixas, não mais do que JET_ccolVarMost colunas de comprimento variável e não mais do que JET_ccolTaggedMost colunas marcadas.

JET_errUnicodeTranslationFail

Ocorreu um erro ao tentar normalizar uma coluna Unicode. Isso pode ser causado por ficar sem recursos do sistema.

JET_errSpaceHintsInvalid

Um elemento da estrutura de dicas de espaço JET não estava correto ou acionável.

Comentários

O nome JetCreateTableColumnIndex3 vem da ordem de criação dos objetos: ele primeiro cria uma tabela, colunas e, em seguida, indexa. JetCreateTableColumnIndex3 cria uma tabela com um conjunto inicial de colunas e índices. Colunas e índices adicionais podem ser adicionados e removidos dinamicamente com JetAddColumn, JetDeleteColumn, JetDeleteColumn2, JetCreateIndex, JetCreateIndex2, JetCreateIndex3 e JetDeleteIndex.

Assim como JetOpenTable, quando o aplicativo é feito usando o tableid retornado, ele geralmente deve ser fechado com JetCloseTable.

Requisitos

Requisito Valor

Cliente

Requer o Windows Vista ou o Windows XP.

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.

Unicode

Implementado como JetCreateTableColumnIndex3W (Unicode) e JetCreateTableColumnIndex3A (ANSI).

Consulte Também

JET_CBTYP
JET_DBID
JET_ERR
JET_GRBIT
JET_INDEXCREATE
JET_INDEXCREATE2
JET_SESID
JET_TABLEID
JET_TABLECREATE2
JET_TABLECREATE3
JET_TUPLELIMITS
JetAddColumn
JetCreateIndex
JetCreateIndex2
JetCreateIndex3
JetCreateTable
JetCreateTableColumnIndex
JetDeleteColumn
JetDeleteColumn2