Compartir a través de


Función JetCreateTable

Se aplica a: Windows | Windows Server

Función JetCreateTable

La función JetCreateTable crea una tabla vacía en una base de datos ESE.

    JET_ERR JET_API JetCreateTable(
      __in          JET_SESID sesid,
      __in          JET_DBID dbid,
      __in          const tchar* szTableName,
      __in          unsigned long lPages,
      __in          unsigned long lDensity,
      __out         JET_TABLEID* ptableid
    );

Parámetros

sesid

Contexto de sesión de base de datos que se va a usar.

dbid

Identificador de base de datos que se va a usar.

szTableName

Nombre del índice que se va a crear.

El nombre debe tener el formato según las reglas siguientes:

  • Sea menor que JET_cbNameMost, sin incluir el valor NULL de terminación.

  • Tenga en cuenta el siguiente conjunto de caracteres: de 0 a 9, de A a Z, de a a z y de todos los demás signos de puntuación excepto "!" (signo de exclamación), "," (coma), "[" (corchete de apertura) y "]" (corchete de cierre), es decir, caracteres ASCII 0x20, 0x22 a través de 0x2d, 0x2f a través de 0x5a, 0x5c, 0x5d a 0x7f.

  • No comienza con un espacio.

  • Se debe hacer de al menos un carácter que no sea de espacio.

lPages

Número inicial de páginas de base de datos que se van a asignar para la tabla. Especificar un número mayor que uno puede reducir la fragmentación si se insertan muchas filas en esta tabla.

lDensity

Densidad de tabla, en puntos porcentuales. El número debe ser 0 o en el intervalo de 20 a 100. Pasar 0 significa que se debe usar el valor predeterminado. El valor predeterminado es 80.

ptableid

Si se ejecuta correctamente, el identificador de tabla se devuelve en este campo. El valor no está definido si la API no devuelve JET_errSuccess.

Valor devuelto

Esta función devuelve el tipo de datos JET_ERR con uno de los siguientes códigos de retorno. Para obtener más información sobre los posibles errores de ESE, vea 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

Si ptablecreate-grbit> especifica JET_bitTableCreateTemplateTable, pero ptablecreate-szTemplateTableName> se establece en NULL.

JET_errColumnDuplicate

Ya existe una columna.

JET_errColumnNotFound

Se intentó indizar en una columna inexistente. Si se intenta indizar condicionalmente una columna inexistente, también se puede producir este error.

JET_errColumnRedundant

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

JET_errDensityInvalid

Se pasó una densidad no válida en el miembro ulDensity de la estructura JET_TABLECREATE o JET_TABLECREATE2 .

JET_errDDLNotInheritable

Indica que la tabla denominada en el miembro szTemplateTableName de la estructura JET_TABLECREATE no estaba marcada como una tabla de plantilla (es decir, esa tabla no tenía JET_bitTableCreateTemplateTable establecido).

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. Algunas de las posibles razones para recibir este error son:

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

  • Windows Server 2003 y versiones posteriores. Intentando crear un índice de tupla con límites de tupla, pero sin pasar el miembro ptuplelimits en la estructura JET_INDEXCREATE (es decir, el miembro grbit de la estructura JET_INDEXCREATE tiene establecido JET_bitIndexTupleLimits, pero el puntero de ptuplelimits es NULL).

  • Pasar una definición de clave no válida en el miembro szKey de la estructura JET_INDEXCREATE . Consulte JET_INDEXCREATE para obtener una explicación de las definiciones válidas.

  • Establecer el miembro cbVarSegMac en JET_INDEXCREATE ser mayor que JET_cbPrimaryKeyMost (para un índice principal) o mayor que 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 bit de JET_bitIndexUnicode establecido en el miembro grbit de JET_INDEXCREATE). Algunas causas comunes incluyen el miembro pidxunicode de la estructura JET_INDEXCREATE es NULL, o el LCID especificado en la estructura pidxunicode no es válido.

  • Especificar una columna con varios valores para un índice principal.

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

JET_errIndexTuplesInvalidLimits

Windows XP y versiones posteriores. Se especificó una estructura JET_TUPLELIMITS y no se admiten sus límites. Consulte la sección comentarios de la estructura JET_TUPLELIMITS .

JET_errIndexTuplesNonUniqueOnly

Windows XP y versiones posteriores. Un índice de tupla no puede ser único (es decir, el miembro grbit de la estructura de JET_INDEXCREATE no debe tener JET_bitIndexPrimary y JET_bitIndexUnique establecido).

JET_errIndexTuplesOneColumnOnly

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

JET_errIndexTuplesSecondaryIndexOnly

Windows XP y versiones posteriores. Un índice de tupla no puede ser un índice principal (es decir, el miembro grbit de la estructura JET_INDEXCREATE no debe tener JET_bitIndexPrimary y JET_bitIndexTuples establecido).

JET_errIndexTuplesVarSegMacNotAllowed

Windows XP y versiones posteriores. Un índice de tupla no permite establecer el miembro cbVarSegMac de la estructura JET_INDEXCREATE .

JET_errIndexTuplesTextColumnsOnly

Windows XP y versiones posteriores. Un índice de tupla solo puede estar en una columna text o Unicode. Un intento de indexar otras columnas (como columnas binarias) dará lugar a JET_errIndexTuplesTextColumnsOnly.

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

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 de JET_INDEXCREATE no se estableció en un valor válido.

JET_errInvalidgrbit

Se especificó una combinación no válida de miembros grbit en JET_TABLECREATE o JET_TABLECREATE2.

La definición de índice no es válida porque el miembro grbit contiene valores incoherentes. Algunas de las posibles razones son:

  • Se especificó un índice principal con un bit ignore (es decir, JET_bitIndexPrimary se pasó con 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_INDEXCREATE tiene establecido JET_bitIndexEmpty, pero no tiene JET_bitIndexIgnoreAnyNull establecido).

  • 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 en la estructura JET_INDEXCREATE o a través del campo lcid de la estructura JET_INDEXCREATE ).

JET_errInvalidParameter

Se ha especificado un parámetro no válido. Algunas de las posibles razones son:

  • El miembro rgcolumncreate de la estructura JET_TABLECREATE2 es NULL.

  • El miembro cbStruct de una de las estructuras de JET_COLUMNCREATE dadas en el miembro rgcolumncreate de la estructura JET_TABLECREATE2 no se estableció en sizeof( JET_COLUMNCREATE ).

  • El miembro cbKey de una estructura JET_INDEXCREATE se establece en cero.

  • El miembro cbStruct de una estructura de JET_INDEXCREATE no está establecido en sizeof( JET_INDEXCREATE ).

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, 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.

Comentarios

JetCreateTable crea una tabla que no contiene ninguna columna. Para agregar columnas, consulte JetAddColumn.

Internamente, JetCreateTable llama a JetCreateTableColumnIndex2, rellenando una estructura de JET_TABLECREATE2 con:

  • JET_TABLECREATE2.cbStruct = sizeof( JET_TABLECREATE2 )

  • JET_TABLECREATE2.szTableName = szTableName

  • JET_TABLECREATE2.ulPages = lPage

  • JET_TABLECREATE2.ulDensity = lDensity

  • JET_TABLECREATE2.tableid = JET_tableidNil

Todos los demás campos de la estructura de JET_TABLECREATE2 interna se establecen en cero o NULL. En la salida, ptableid se establecerá en JET_TABLECREATE2.tableid.

Consulte JetCreateTableColumnIndex2 para obtener más detalles.

Al igual que JetOpenTable, cuando la aplicación se realiza mediante el miembro tableid devuelto de la estructura JET_TABLECREATE2 , normalmente debe cerrarse con JetCloseTable.

Requisitos

Requisito Value

Cliente

Requiere Windows Vista, Windows XP o Windows 2000 Professional.

Servidor

Requiere Windows Server 2008, Windows Server 2003 o Windows 2000 Server.

Encabezado

Declarado en Esent.h.

Library

Use ESENT.lib.

Archivo DLL

Requiere ESENT.dll.

Unicode

Se implementa como JetCreateTableW (Unicode) y JetCreateTableA (ANSI).

Consulte también

JET_DBID
JET_ERR
JET_GRBIT
JET_TABLEID
JET_TABLECREATE2
JetAddColumn
JetCreateTableColumnIndex
JetCreateTableColumnIndex2