JET_COLUMNDEF 结构

适用于: Windows |Windows Server

JET_COLUMNDEF 结构

JET_COLUMNDEF结构定义可以存储在列中的数据。

    typedef struct {
      unsigned long cbStruct;
      JET_COLUMNID columnid;
      JET_COLTYP coltyp;
      unsigned short wCountry;
      unsigned short langid;
      unsigned short cp;
      unsigned short wCollate;
      unsigned long cbMax;
      JET_GRBIT grbit;
    } JET_COLUMNDEF;

成员

cbStruct

结构大小(以字节为单位)。 它必须设置为 sizeof ( JET_COLUMNDEF) 。

columnid

保留。 columnid 必须设置为 0 (零) 。

coltyp

列的类型 (例如文本、二进制或数字) 。 有关详细信息,请参阅 JET_COLTYP

wCountry

保留。 wCountry 必须设置为 0 (零) 。

langid

已过时。 langid 应设置为 0 (零) 。

cp

列的代码页。 文本列的唯一有效值为英语 (1252) 和 Unicode (1200) 。 值为零表示将使用默认值 (英语、1252) 。 如果该列不是文本列,则代码页会自动设置为零。

wCollate

保留。 wCollate 必须设置为 0 (零) 。

cbMax

可变长度列的最大长度(以字节为单位)或固定长度列的长度。

grbit

一组位,其中包含要用于此调用的选项,其中包括零个或多个以下值。

含义

JET_bitColumnFixed

列是固定的。 无论列中存储了多少数据,它始终会在一行中使用相同的空间量。 JET_bitColumnFixed不能与 JET_bitColumnTagged 一起使用。 此位不能与JET_coltypLongText和JET_coltypLongBinary) 的长值 (一起使用。

JET_bitColumnTagged

将标记该列。 如果标记列不包含数据,则不会占用数据库中的任何空间。 此位不能与JET_bitColumnFixed一起使用。

JET_bitColumnNotNULL

列不得设置为 NULL 值。

JET_bitColumnVersion

列是指定行版本的版本列。 此列的值从零开始,并且将针对行上的每次更新自动递增。

此位只能应用于 JET_coltypLong 列。 此位不能与JET_bitColumnAutoincrement、JET_bitColumnEscrowUpdate或JET_bitColumnTagged一起使用。

JET_bitColumnAutoincrement

列将自动递增。 该数字是一个递增的数字,保证在表中是唯一的。 但是,这些数字可能不是连续的。 例如,如果将五行插入表中,则“autoincrement”列可能包含值 { 1, 2, 6, 7, 8 }。 此位只能用于 类型为 JET_coltypLongJET_coltypCurrency 的列。

Windows 2000: 在 Windows 2000 中,此位只能用于 类型为 JET_coltypLong 的列。

JET_bitColumnUpdatable

此位仅在调用 JetGetColumnInfo 时有效。

JET_bitColumnTTKey

此位仅在调用 JetOpenTable 时有效。

JET_bitColumnTTDescending

此位仅在调用 JetOpenTempTable 时有效。

JET_bitColumnMultiValued

列可以是多值列。 多值列可以有零个、一个或多个与之关联的值。 多值列中的各种值由一个名为 itagSequence 成员的数字标识,该成员属于各种结构,包括: JET_RETINFOJET_SETINFOJET_SETCOLUMNJET_RETRIEVECOLUMNJET_ENUMCOLUMNVALUE。 多值列必须是标记列;也就是说,它们不能是固定长度列或可变长度列。

JET_bitColumnEscrowUpdate

指定列是托管更新列。 托管更新列可由使用 JetEscrowUpdate 的不同会话同时更新,并将保持事务一致性。 托管更新列还必须满足以下条件:

  • 仅当表为空时,才能创建托管更新列。

  • 托管更新列的类型必须为 JET_coltypLong

  • 托管更新列必须具有默认值, (cbDefault 必须为正) 。

  • JET_bitColumnEscrowUpdate不能与JET_bitColumnTagged、JET_bitColumnVersion或JET_bitColumnAutoincrement结合使用。

JET_bitColumnUnversioned

将在不包含版本信息的 中创建列。 这意味着尝试添加具有相同名称的列的其他事务将失败。 此位仅适用于 JetAddColumn。 它不能在事务中使用。

JET_bitColumnMaybeNull

保留供将来使用。

JET_bitColumnFinalize

使用 JET_bitColumnDeleteOnZero 而不是JET_bitColumnFinalize。 JET_bitColumnFinalize可以最终确定列。 当可最终完成的列具有达到零的托管更新列时,将删除该行。 将来的版本可能会调用回调函数,而不是 (有关详细信息,请参阅 JET_CALLBACK) 。 可以最终完成的列必须是托管更新列。 JET_bitColumnFinalize不能与 JET_bitColumnUserDefinedDefault 一起使用。

JET_bitColumnUserDefinedDefault

列的默认值将由回调函数提供。 请参阅 JET_CALLBACK。 具有用户定义的默认值的列必须是带标记的列。 指定JET_bitColumnUserDefinedDefault意味着 pvDefault 必须指向 JET_USERDEFINEDDEFAULT 结构, cbDefault 必须设置为 sizeof ( JET_USERDEFINEDDEFAULT ) 。

  • JET_bitColumnUserDefinedDefault不能与JET_bitColumnFixed、JET_bitColumnNotNULL、JET_bitColumnVersion、JET_bitColumnAutoincrement、JET_bitColumnUpdatable、JET_bitColumnEscrowUpdate、JET_bitColumnFinalize、JET_bitColumnDeleteOnZero或JET_bitColumnMaybeNull结合使用。

JET_bitColumnDeleteOnZero

该列是托管更新列,当它达到零时,将删除该记录。 可以最终完成的列的常见用途是将其用作引用计数字段,当字段达到零时,将删除记录。 JET_bitColumnDeleteOnZero与JET_bitColumnFinalize相关。 零时删除列必须是托管更新列。 JET_bitColumnDeleteOnZero不能与 JET_bitColumnFinalize 一起使用。 JET_bitColumnDeleteOnZero不能与用户定义的默认列一起使用。

要求

要求

客户端

需要 Windows Vista、Windows XP 或 Windows 2000 Professional。

服务器

需要 Windows Server 2008、Windows Server 2003 或 Windows 2000 Server。

标头

在 Esent.h 中声明。

另请参阅

JET_CALLBACK
JET_COLTYP
JET_COLUMNCREATE
JET_COLUMNID
JET_GRBIT
JET_USERDEFINEDDEFAULT
JetAddColumn
JetEscrowUpdate
JetGetTableColumnInfo
JetOpenTempTable
JetOpenTempTable2
JetOpenTempTable3
JetRenameColumn