Función JetCreateTableColumnIndex4W

Se aplica a: Windows | Windows Server

La función JetCreateTableColumnIndex4W crea una tabla en un motor de almacenamiento extensible (ESA( base de datos con un conjunto inicial de índices y un conjunto inicial de columnas de una matriz de estructuras de JET_TABLECREATE3 . La estructura JET_TABLECREATE3 permite especificar una función de devolución de llamada.

La función JetCreateTableColumnIndex4W se introdujo en el sistema operativo Windows 8.

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

Parámetros

sesid

Contexto de sesión de base de datos que se va a usar para la llamada API.

dbid

Identificador de base de datos que se va a usar para la llamada API.

ptablecreate

Puntero a una estructura JET_TABLECREATE3 que define la tabla que se va a crear. Consulte JET_TABLECREATE3 para obtener más detalles.

Valor devuelto

Esta función devuelve el tipo de datos JET_ERR con uno de los códigos de retorno enumerados en la tabla siguiente. Para obtener más información sobre los posibles errores de Enginge de almacenamiento extensible (ESE), consulte Extensible Storage Engine Errors and Error Handling Parameters.

Código devuelto

Descripción

JET_errSuccess

La operación se ha completado correctamente.

JET_errCallbackNotResolved

No se pudo resolver la función de devolución de llamada. Es posible que no se haya encontrado el archivo DLL o que no se haya encontrado la función en el archivo DLL. Con el registro suficiente habilitado, el registro de eventos proporcionará más detalles.

JET_errCannotIndex

Se intentó indizar sobre una columna de actualización de custodia o SLV (tenga en cuenta que las columnas SLV están en desuso).

JET_errCannotNestDDL

Se devuelve si el parámetro ptablecreate-grbit> especifica el valor JET_bitTableCreateTemplateTable, pero el parámetro ptablecreate-szTemplateTableName> se establece en null.

JET_errColumnDuplicate

Ya existe una columna.

JET_errColumnNotFound

Se intentó indizar en una columna inexistente. Un intento de indexar condicionalmente a través de una columna inexistente también puede producir este error.

JET_errColumnRedundant

Se intentó agregar una columna redundante. No debe existir más de una columna de autoincremento y no debe existir más de una columna de versión por tabla.

JET_errDensityInvalid

Este error se devolverá si el miembro ulDensity de la estructura JET_INDEXCREATE2 está establecido en un número menor que 20 o más de 100.

JET_errDDLNotInheritable

Indica que la tabla denominada en el miembro szTemplateTableName de la estructura JET_TABLECREATE3 no se marcó como una tabla de plantilla (es decir, esa tabla no tenía establecido el valor de parámetro JET_bitTableCreateTemplateTable).

JET_errIndexDuplicate

Se intentó definir dos índices idénticos.

JET_errIndexHasPrimary

Se intentó especificar más de un índice principal para una tabla. Una tabla debe tener exactamente un índice principal. Si no se especifica ningún índice principal, el motor de base de datos creará uno de forma transparente.

JET_errIndexInvalidDef

Se especificó una definición de índice no válida. A continuación se muestran algunos de los posibles motivos de este error:

  • Un índice principal es condicional (es decir, el miembro grbit de la estructura JET_INDEXCREATE2 tiene establecido el valor JET_bitIndexPrimary y el miembro cConditionalColumn de la estructura JET_INDEXCREATE2 es mayor que cero).

  • Se aplica a las versiones del sistema operativo Windows Server a partir de Windows Server 2003. Un intento de crear un índice de tupla con límites de tupla, pero sin pasar el miembro ptuplelimits en la estructura JET_INDEXCREATE2 (es decir, el miembro grbit de la estructura JET_INDEXCREATE2 tiene JET_bitIndexTupleLimits valor establecido, pero el puntero ptuplelimits es null).

  • Pasar una definición de clave no válida en el miembro szKey de la estructura JET_INDEXCREATE2 . Para obtener información sobre las definiciones válidas, vea JET_INDEXCREATE2.

  • Establecer el miembro cbVarSegMac en JET_INDEXCREATE2 ser mayor que el valor de JET_cbPrimaryKeyMost (para un índice principal) o mayor que el valor de JET_cbSecondaryKeyMost (para un índice secundario).

  • Pasar una combinación no válida para un índice Unicode definido por el usuario (uno que tiene el valor de JET_bitIndexUnicode bit establecido en el miembro grbit de la estructura JET_INDEXCREATE2 ). Algunas causas comunes incluyen el miembro pidxunicode de la estructura JET_INDEXCREATE2 es null, o el LCID especificado en la estructura pidxunicode no es válido.

  • Especificar una columna multivalor para un índice principal.

  • Intentando indexar demasiadas columnas condicionales. El miembro cConditionalColumn de la estructura JET_INDEXCREATE2 no debe ser mayor que JET_ccolKeyMost.

JET_errIndexTuplesInvalidLimits

Se aplica a las versiones de Windows a partir de Windows XP. Se especificó una estructura JET_TUPLELIMITS y no se admiten sus límites. Para obtener más información, vea la sección comentarios de la estructura JET_TUPLELIMITS .

JET_errIndexTuplesNonUniqueOnly

Se aplica a las versiones de Windows a partir de Windows XP. Un índice de tupla no puede ser único (es decir, el miembro grbit de la estructura JET_INDEXCREATE2 no debe tener tanto JET_bitIndexPrimary como JET_bitIndexUnique valores establecidos).

JET_errIndexTuplesOneColumnOnly

Se aplica a las versiones de Windows a partir de Windows XP. Un índice de tupla solo puede estar sobre una sola columna (es decir, si el miembro grbit de la estructura JET_INDEXCREATE2 tiene establecido JET_bitIndexTuples valor y el miembro szKey de la estructura JET_INDEXCREATE2 especifica más de una columna).

JET_errIndexTuplesSecondaryIndexOnly

Se aplica a las versiones de Windows a partir de Windows XP. Un índice de tupla no puede ser un índice principal (es decir, el miembro grbit de la estructura JET_INDEXCREATE2 no debe tener JET_bitIndexPrimary y JET_bitIndexTuples establecer).

JET_errIndexTuplesTextColumnsOnly

Se aplica a las versiones de Windows a partir de Windows XP. Un índice de tupla solo puede estar en una columna text o Unicode. Un intento de indexar otras columnas (como columnas binarias) dará como resultado un código de respuesta JET_errIndexTuplesTextColumnsOnly.

JET_errIndexTuplesVarSegMacNotAllowed

Se aplica a las versiones de Windows a partir de Windows XP. Un índice de tupla no permite establecer el miembro cbVarSegMac de la estructura JET_INDEXCREATE2 .

JET_errInTransaction

Se intentó crear un índice sin información de versión mientras se encontraba en una transacción.

JET_errInvalidCodePage

El miembro cp de la estructura JET_COLUMNCREATE no se estableció en una página de códigos válida. Los únicos valores válidos para las columnas de texto son Inglés (1252) y Unicode (1200). Un valor de 0 significa que se usará el valor predeterminado (inglés, 1252).

JET_errInvalidColumnType

El miembro coltyp de la estructura JET_COLUMNCREATE no se estableció en un tipo de columna válido.

JET_errInvalidCreateIndex

Estos son algunos de los motivos por los que puede producirse este error:

  • El miembro rgindexcreate de la estructura JET_TABLECREATE2 se estableció en null.

  • El miembro rgcolumncreate de la estructura JET_TABLECREATE2 se estableció en null.

  • El miembro cbStruct de una estructura JET_INDEXCREATE2 no se estableció en un valor válido.

JET_errInvalidgrbit

Se especificó una combinación no válida de miembros grbit en la estructura JET_TABLECREATE3 .

La definición de índice no es válida porque el miembro grbit contiene valores incoherentes. Los siguientes son algunos de los motivos posibles:

  • Un índice principal tenía especificado un bit ignore (es decir, JET_bitIndexPrimary valor se pasó con los valores de JET_bitIndexIgnoreNull, JET_bitIndexIgnoreAnyNull o JET_bitIndexIgnoreFirstNull).

  • Un índice vacío no omite ningún miembro NULL (es decir, el miembro grbit de la estructura JET_INDEXCREATE2 tiene establecido el valor de JET_bitIndexEmpty, pero no tiene establecido JET_bitIndexIgnoreAnyNull valor).

  • Pasar una estructura de JET_CONDITIONALCOLUMN con un miembro grbit no válido.

JET_errInvalidLanguageId

Se pasó un identificador de configuración regional (LCID) no válido (ya sea a través del miembro lcid de la estructura JET_UNICODEINDEX a la que apunta el miembro pidxunicode de la estructura JET_INDEXCREATE2 o a través del campo lcid de la estructura JET_INDEXCREATE2 ).

JET_errInvalidParameter

Se ha especificado un parámetro no válido. Estos son algunos de los motivos posibles:

JET_errRecordTooBig

El registro es demasiado grande. La suma del miembro cbMax de la estructura JET_COLUMNCREATE para todas las columnas fijas no debe superar un valor determinado.

JET_errTableDuplicate

La tabla ya existe.

JET_errTooManyColumns

Se intentó agregar demasiadas columnas a la tabla. Una tabla no puede tener más de JET_ccolFixedMost columnas fijas, no más de JET_ccolVarMost columnas de longitud variable y no más de JET_ccolTaggedMost columnas etiquetadas.

JET_errUnicodeTranslationFail

Error al intentar normalizar una columna Unicode. Esto puede deberse a la ejecución de recursos del sistema.

JET_errSpaceHintsInvalid

Un elemento de la estructura de sugerencias de espacio JET no era correcto o accionable.

Comentarios

La función JetCreateTableColumnIndex4W crea una tabla con un conjunto inicial de columnas e índices. Las columnas e índices adicionales se pueden agregar e quitar dinámicamente mediante las funciones JetAddColumn, JetDeleteColumn, JetDeleteColumn2, JetCreateIndex, JetCreateIndex2, JetCreateIndex3, JetCreateIndex4W y JetDeleteIndex .

Al igual que con la función JetOpenTable , cuando la aplicación se realiza mediante el tableid devuelto, la función JetCloseTable debe cerrar la aplicación.

Requisitos

Requisito Value

Cliente

Requiere Windows 8.

Servidor

Requiere Windows Server 2012.

Encabezado

Declarado en Esent.h.

Library

Use ESENT.lib.

Archivo DLL

Requiere ESENT.dll.

Consulte también

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