Estructura de JET_COLUMNCREATE

Se aplica a: Windows | Windows Server

Estructura de JET_COLUMNCREATE

La estructura JET_COLUMNCREATE describe una columna que se va a crear en una base de datos.

    typedef struct tag_JET_COLUMNCREATE {
      unsigned long cbStruct;
      tchar* szColumnName;
      JET_COLTYP coltyp;
      unsigned long cbMax;
      JET_GRBIT grbit;
      void* pvDefault;
      unsigned long cbDefault;
      unsigned long cp;
      JET_COLUMNID columnid;
      JET_ERR err;
    } JET_COLUMNCREATE;

Miembros

cbStruct

El tamaño de la estructura en bytes. Este campo debe inicializarse en sizeof( JET_COLUMNCREATE ).

szColumnName

Nombre de la columna que se va a crear. El nombre debe cumplir los siguientes criterios:

  • Debe tener menos de JET_cbNameMost caracteres de longitud, sin incluir el valor NULL de terminación.
  • Solo debe contener caracteres de los siguientes conjuntos: de 0 a 9, A a Z, a a z y de todos los demás signos de puntuación, excepto el 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 través de 0x7f.
  • No puede comenzar con un espacio.
  • Debe contener al menos un carácter que no sea de espacio.

coltyp

Tipo de la columna (por ejemplo, texto, binario o numérico). Para obtener más información, consulte JET_COLTYP.

cbMax

Longitud máxima, en bytes, de una columna de longitud variable. Longitud de la columna para columnas de longitud fija.

grbit

Grupo de bits que contienen las opciones de esta estructura y que incluyen cero o más de los valores siguientes.

Value

Significado

JET_bitColumnFixed

La columna es fija. Siempre usará la misma cantidad de espacio en una fila, independientemente de la cantidad de datos que se almacenan en la columna. JET_bitColumnFixed no se puede usar con JET_bitColumnTagged. Este bit no se puede usar con valores largos, como JET_coltypLongText y JET_coltypLongBinary.

JET_bitColumnTagged

La columna se etiqueta. Las columnas etiquetadas no ocupan ningún espacio en la base de datos si no contienen datos. Este bit no se puede usar con JET_bitColumnFixed.

JET_bitColumnNotNULL

La columna nunca debe establecerse en un valor NULL.

JET_bitColumnAutoincrement

La columna se incrementa automáticamente. El número es un número creciente y se garantiza que es único dentro de una tabla. Sin embargo, es posible que el número no sea continuo. Por ejemplo, si se insertan cinco filas en una tabla, la columna de creación automática podría contener los valores { 1, 2, 6, 7, 8 }.

Windows 2000: Este bit solo se puede usar en columnas de tipo JET_coltypLong.

Windows Server 2003 y versiones posteriores: Este bit solo se puede usar en columnas de tipo JET_coltypLong o JET_coltypCurrency.

JET_bitColumnUpdatable

Este bit solo es válido en llamadas a JetGetColumnInfo.

JET_bitColumnTTKey

Este bit solo es válido en las llamadas a JetOpenTempTable.

JET_bitColumnTTDescending

Este bit solo es válido en las llamadas a JetOpenTempTable.

JET_bitColumnMultiValued

La columna puede tener varios valores. Una columna con varios valores puede tener cero, uno o más valores asociados. Los distintos valores de una columna multivalor se identifican mediante el miembro itagSequence de varias estructuras, por ejemplo, JET_RETINFO, JET_SETINFO, JET_SETCOLUMN, JET_RETRIEVECOLUMN, JET_ENUMCOLUMNVALUE. Las columnas con varios valores deben etiquetarse como columnas; es decir, no pueden ser columnas de longitud fija o de longitud variable.

JET_bitColumnEscrowUpdate

La columna es una columna de actualización de custodia. Una columna de actualización de custodia se puede actualizar simultáneamente mediante diferentes sesiones con JetEscrowUpdate y mantener la coherencia transaccional.

  • Una columna de actualización de custodia solo se puede crear cuando la tabla está vacía.

  • Una columna de actualización de custodia debe ser de tipo JET_coltypLong.

  • Una columna de actualización de custodia debe tener un valor predeterminado (es decir, cbDefault debe ser positivo).

  • JET_bitColumnEscrowUpdate no se puede usar junto con las siguientes constantes:

    • JET_bitColumnTagged

    • JET_bitColumnVersion

    • JET_bitColumnAutoincrement

JET_bitColumnUnversioned

La columna se crea sin una versión. Se producirá un error en otras transacciones que intenten agregar una columna con el mismo nombre. Este bit solo es útil con JetAddColumn. No se puede usar dentro de una transacción.

JET_bitColumnMaybeNull

Reservado para uso futuro.

JET_bitColumnFinalize

Use JET_bitColumnDeleteOnZero en lugar de JET_bitColumnFinalize. JET_bitColumnFinalize especifica que se puede finalizar una columna. Cuando una columna que se puede finalizar tiene una columna de actualización de custodia que alcanza cero, se eliminará la fila. En su lugar, las versiones futuras pueden invocar una función de devolución de llamada. Para obtener más información, consulte JET_CALLBACK. Una columna que se puede finalizar debe ser una columna de actualización de custodia. JET_bitColumnFinalize no se puede usar con JET_bitColumnUserDefinedDefault.

JET_bitColumnUserDefinedDefault

La función de devolución de llamada proporciona el valor predeterminado de una columna, JET_CALLBACK. Una columna que tenga un valor predeterminado definido por el usuario debe ser una columna etiquetada. pvDefault debe apuntar a una estructura de JET_USERDEFINEDDEFAULT y cbDefault debe establecerse en sizeof(JET_USERDEFINEDDEFAULT).

JET_bitColumnUserDefinedDefault no se puede usar junto con las siguientes constantes:

  • JET_bitColumnFixed

  • JET_bitColumnNotNULL

  • JET_bitColumnVersion

  • JET_bitColumnAutoincrement

  • JET_bitColumnUpdatable

  • JET_bitColumnEscrowUpdate

  • JET_bitColumnFinalize

  • JET_bitColumnDeleteOnZero

  • JET_bitColumnMaybeNull

JET_bitColumnDeleteOnZero

La columna es una columna de actualización de custodia y, cuando alcanza cero, se eliminará el registro. Un uso común para una columna que se puede finalizar es usarlo como un campo de recuento de referencias y cuando el campo alcanza cero el registro se elimina. JET_bitColumnDeleteOnZero está relacionado con JET_bitColumnFinalize. Una columna delete-on-zero debe ser una columna de actualización de custodia. JET_bitColumnDeleteOnZero no se puede usar con JET_bitColumnFinalize. JET_bitColumnDeleteOnZero no se puede usar con columnas predeterminadas definidas por el usuario.

pvDefault

Apunta a un búfer que será el valor predeterminado de una columna. La longitud del búfer es cbDefault. Si no hay ningún valor predeterminado, pvDefault debe establecerse en NULL y cbDefault debe establecerse en cero. Si grbit tiene JET_bitColumnUserDefinedDefault establecido, pvDefault se interpretará como puntero a una estructura de JET_USERDEFINEDDEFAULT. Los valores predeterminados no pueden ser mayores de 255 bytes. Si un valor predeterminado es mayor que 255 bytes, se truncará silenciosamente.

cbDefault

Tamaño, en bytes, del búfer especificado por pvDefault.

cp

Página de códigos de la columna. Los únicos valores válidos para las columnas de texto son Inglés (1252) y Unicode (1200). Un valor de cero significa que se usará el valor predeterminado (inglés, 1252). Si la columna no es una columna de texto, la página de códigos se establece automáticamente en cero.

columnid

Si se ejecuta correctamente, el identificador de columna de la columna recién creada se devolverá en este campo. Si se produce un error, el valor no está definido.

err

El campo err contendrá el estado de creación de esta columna. Consulte JetAddColumn para obtener una lista de valores devueltos probables.

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.

Unicode

Se implementa como JET_COLUMNCREATE_W (Unicode) y JET_COLUMNCREATE_A (ANSI).

Consulte también

JET_COLTYP
JET_COLUMNID
JET_ERR
JET_GRBIT
JET_RETINFO
JET_SETINFO
JET_SETCOLUMN
JET_RETRIEVECOLUMN
JET_ENUMCOLUMNVALUE
JetAddColumn
JetCreateTableColumnIndex
JetCreateTableColumnIndex2
JetEscrowUpdate
JetRenameColumn
JetSetColumns