Last modified: March 09, 2015

Applies to: Windows | Windows Server

The JET_COLUMNBASE structure describes the parameters of a base column. The JetGetColumnInfo and JetGetTableColumnInfo functions use the JET_COLUMNBASE structure.

typedef struct {
  unsigned long cbStruct;
  JET_COLUMNID columnid;
  JET_COLTYP coltyp;
  unsigned short wCountry;
  unsigned short langid;
  unsigned short cp;
  unsigned short wFiller;
  unsigned long cbMax;
  JET_GRBIT grbit;
  tchar szBaseTableName[256];
  tchar szBaseColumnName[256];



The size of this structure, in bytes. Set cbStruct to sizeof( JET_COLUMNBASE ).


Reserved. Set columnid to 0 (zero).


The type of the column (for example, text, binary, or numerical). For more information, see JET_COLTYP.


Reserved. Set to 0 (zero).


Reserved. Set to 0 (zero).


The code page for the column. The only valid values for text columns are English (1252) and Unicode (1200). A value of zero means the default will be used (English, 1252). If the column is not a text column, the code page is automatically set to zero.


Reserved. Set to 0 (zero).


The maximum length, in bytes, of a variable-length column, or the actual length, in bytes, of a fixed-length column.


Options for the column, including zero or more of the following values.




The column is fixed and occupies the same amount of space in a row regardless of how much data it contains. JET_bitColumnFixed cannot be combined with JET_bitColumnTagged, and cannot be used when the coltyp member is set to JET_coltypLongText or JET_coltypLongBinary.


The column is tagged and occupies space in the database only if it contains data. JET_bitColumnTagged cannot be combined with JET_bitColumnFixed, JET_bitColumnVersion, or JET_bitColumnEscrowUpdate.


The column must not be set to a NULL value.

JET_bitColumnNotNULL cannot be combined with JET_bitColumnUserDefinedDefault.


The column is a version column that specifies the version of the row. The value of this column starts at zero and is automatically incremented for each update of the row.

JET_bitColumnVersion can be used only when the coltyp member is set to JET_coltypLong and cannot be combined with JET_bitColumnAutoincrement, JET_bitColumnEscrowUpdate, JET_bitColumnTagged, or JET_bitColumnUserDefinedDefault.


The column is automatically incremented. The number is an increasing number, and is guaranteed to be unique within a table. The numbers, however, may not be sequential. For example, if five rows are inserted into a table, the automatically incremented column could contain the values { 1, 2, 6, 7, 8 }.

JET_bitColumnAutoincrement can be used only when the coltyp member is set to JET_coltypLong or JET_coltypCurrency and cannot be combined with JET_bitColumnEscrowUpdate, JET_bitColumnUserDefinedDefault, or JET_bitColumnVersion.

Windows 2000:  JET_bitColumnVersion can be used only when the coltyp member is set to JET_coltypLong.


Valid only for calls to JetGetColumnInfo. JET_bitColumnUpdatable cannot be combined with JET_bitColumnUserDefinedDefault.


Valid only on calls to JetOpenTable.


Valid only on calls to JetOpenTempTable.


The column can be multi-valued. A multi-valued column can have zero, one, or more values associated with it. The various values in a multi-valued column are identified by a number in the itagSequence member of various structures, for example, JET_RETINFO, JET_SETINFO, JET_SETCOLUMN, JET_RETRIEVECOLUMN, JET_ENUMCOLUMNVALUE. Multi-valued columns must be tagged columns; that is, they may not be fixed-length or variable-length columns.


Specifies that a column is an escrow update column that can be updated concurrently by different sessions with JetEscrowUpdate and will have transactional consistency.

  • An escrow update column can be created only when the table is empty.

  • For an escrow update column, the coltyp member must be set to JET_coltypLong.

  • An escrow update column must have a default value (that is cbDefault must be positive).

  • JET_bitColumnEscrowUpdate cannot be combined with JET_bitColumnTagged, JET_bitColumnVersion, or JET_bitColumnAutoincrement.


The column is created without a version number. This means that other transactions attempting to add a column with the same name will fail. JET_bitColumnUnversioned is used only with JetAddColumn. It cannot be used within a transaction.


Reserved for future use.

JET_bitColumnMaybeNull cannot be combined with JET_bitColumnUserDefinedDefault.


Do not use. Use JET_bitColumnDeleteOnZero instead.

The column can be finalized. A column that can be finalized is an escrow update column that causes the row to be deleted when the column reaches zero. Future versions may invoke a callback function instead (See JET_CALLBACK). A column that can be finalized must be an escrow update column. JET_bitColumnFinalize cannot be combined with JET_bitColumnUserDefinedDefault.


The default value for a column will be provided by a callback function. See JET_CALLBACK. A column that has a user-defined default must be a tagged column. If JET_bitColumnUserDefinedDefault is specified, the pvDefault must point to a JET_USERDEFINEDDEFAULT structure, and cbDefault must be set to sizeof( JET_USERDEFINEDDEFAULT ).

JET_bitColumnUserDefinedDefault cannot be combined with JET_bitColumnFixed, JET_bitColumnNotNULL, JET_bitColumnVersion, JET_bitColumnAutoincrement, JET_bitColumnUpdatable, JET_bitColumnEscrowUpdate, JET_bitColumnFinalize, JET_bitColumnDeleteOnZero, or JET_bitColumnMaybeNull.


The column is an escrow update column and when it reaches zero, the record will be deleted. A common use for delete-on-zero columns is as reference count fields. When the number of references fall to zero, the record is deleted. A delete-on-zero column must be an escrow update column.

JET_bitColumnDeleteOnZero replaces JET_bitColumnFinalize.

JET_bitColumnDeleteOnZero cannot be combined with JET_bitColumnFinalize or JET_bitColumnUserDefinedDefault, and cannot be used with user-defined default columns.


The table from which the current table inherits its DDL.


The name of the column in the template table.


JET_COLUMNBASE contains much of the same information as JET_COLUMNDEF, but it adds string fields to describe the base table (if a hierarchical DDL was used).



Requires Windows Vista, Windows XP, or Windows 2000 Professional.


Requires Windows Server 2008, Windows Server 2003, or Windows 2000 Server.


Declared in Esent.h.


Implemented as JET_COLUMNBASE_W (Unicode) and JET_COLUMNBASE_A (ANSI).

See Also