Compartilhar via


Função JetCreateTableColumnIndex4W

Aplica-se a: Windows | Windows Server

A função JetCreateTableColumnIndex4W cria uma tabela em um banco de dados ESE (Mecanismo de Armazenamento Extensível) 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.

A função JetCreateTableColumnIndex4W foi introduzida no sistema operacional Windows 8.

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

Parâmetros

sesid

O contexto de sessão do 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 códigos de retorno listados na tabela a seguir. Para obter mais informações sobre os possíveis erros de ESE (Extensible Storage Enginge), 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 o log suficiente habilitado, o log de eventos fornecerá mais detalhes.

JET_errCannotIndex

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

JET_errCannotNestDDL

Retornado se o parâmetro ptablecreate-grbit> especificar o valor JET_bitTableCreateTemplateTable, mas o parâmetro ptablecreate-szTemplateTableName> for definido como nulo.

JET_errColumnDuplicate

Já existe uma coluna.

JET_errColumnNotFound

Foi feita uma tentativa de indexar em uma coluna inexistente. Uma tentativa de 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 existir mais de uma coluna de autoincremento e não deve existir mais de 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 o valor do parâmetro JET_bitTableCreateTemplateTable definido).

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. Estes são alguns dos possíveis motivos para esse erro:

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

  • Aplica-se a versões do sistema operacional Windows Server a partir do Windows Server 2003. Uma tentativa de 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 valor definido, mas o ponteiro ptuplelimits é nulo).

  • Passando uma definição de chave inválida no membro szKey da estrutura JET_INDEXCREATE2 . Para obter informações sobre definições válidas, consulte JET_INDEXCREATE2.

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

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

  • Especificando uma coluna de 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

Aplica-se a versões do Windows a partir do Windows XP. Uma estrutura de JET_TUPLELIMITS foi especificada e não há suporte para seus limites. Para obter mais informações, consulte a seção de comentários da estrutura JET_TUPLELIMITS .

JET_errIndexTuplesNonUniqueOnly

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

JET_errIndexTuplesOneColumnOnly

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

JET_errIndexTuplesSecondaryIndexOnly

Aplica-se a versões do Windows a partir do Windows XP. 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

Aplica-se a versões do Windows a partir do Windows XP. 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 um código de resposta JET_errIndexTuplesTextColumnsOnly.

JET_errIndexTuplesVarSegMacNotAllowed

Aplica-se a versões do Windows a partir do Windows XP. 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 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 nulo.

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

  • 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 na estrutura JET_TABLECREATE3 .

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

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

  • Um índice vazio não ignora membros nulos (ou seja, o membro grbit da estrutura JET_INDEXCREATE2 tem o valor JET_bitIndexEmpty definido, mas não tem JET_bitIndexIgnoreAnyNull valor 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 para a qual o membro pidxunicode na estrutura JET_INDEXCREATE2 aponta ou por meio do campo lcid da estrutura JET_INDEXCREATE2 ).

JET_errInvalidParameter

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

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 quando foi feita uma tentativa de normalizar uma coluna Unicode. Isso pode ser causado pela esgotamento dos recursos do sistema.

JET_errSpaceHintsInvalid

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

Comentários

A função JetCreateTableColumnIndex4W cria uma tabela com um conjunto inicial de colunas e índices. Colunas e índices adicionais podem ser adicionados e removidos dinamicamente por meio das funções JetAddColumn, JetDeleteColumn, JetDeleteColumn2, JetCreateIndex, JetCreateIndex2, JetCreateIndex3, JetCreateIndex4W e JetDeleteIndex .

Assim como acontece com a função JetOpenTable , quando o aplicativo terminar de usar o tableid retornado, a função JetCloseTable deverá fechar o aplicativo.

Requisitos

Requisito Valor

Cliente

Requer Windows 8.

Servidor

Requer Windows Server 2012.

Cabeçalho

Declarado em Esent.h.

Biblioteca

Use ESENT.lib.

DLL

Requer ESENT.dll.

Confira 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