JET_COLUMNCREATE 结构

适用于:Windows |Windows服务器

JET_COLUMNCREATE 结构

JET_COLUMNCREATE结构描述在数据库中创建的列。

    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;

成员

cbStruct

结构的大小(以字节为单位)。 此字段必须初始化为 sizeof ( JET_COLUMNCREATE )

szColumnName

要创建的列的名称。 该名称必须满足以下条件:

  • 长度必须少于JET_cbNameMost个字符,不包括终止 NULL。
  • 它必须仅包含以下集中的字符:0 到 9、A 到 Z、 a through z 和所有其他标点,除感叹号 (!) 、逗号 (、) 、左方括号 ([) 和右括号 (]) ,即 ASCII 字符0x20、0x22 0x2d、0x2f 0x5a、0x5c、0x5d 0x7f。
  • 它不能以空格开头。
  • 它必须至少包含一个非空格字符。

coltyp

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

cbMax

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

grbit

一组位,其中包含此结构的选项,其中包括以下值的零个或多个。

含义

JET_bitColumnFixed

列是固定的。 无论列中存储的数据量如何,它始终在行中使用相同数量的空间。 JET_bitColumnFixed不能与JET_bitColumnTagged一起使用。 此位不能用于长值,例如 JET_coltypLongTextJET_coltypLongBinary

JET_bitColumnTagged

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

JET_bitColumnNotNULL

列永远不能设置为 NULL 值。

JET_bitColumnAutoincrement

列会自动递增。 该数字是一个递增的数字,并保证在表中是唯一的。 但是,数字可能不是连续的。 例如,如果将五行插入表中,则自动创建列可以包含值 { 1、2、6、7、8 }。

Windows 2000:此位只能用于JET_coltypLong类型的列。

Windows Server 2003 及更高版本:此位只能用于JET_coltypLongJET_coltypCurrency类型的列。

JET_bitColumnUpdatable

此位仅在对 JetGetColumnInfo 的调用时有效。

JET_bitColumnTTKey

此位仅在对 JetOpenTempTable 的调用时有效。

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。 具有用户定义的默认值的列必须是标记列。 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不能与用户定义的默认列一起使用。

pvDefault

指向一个缓冲区,该缓冲区将是列的默认值。 缓冲区的长度为 cbDefault。 如果没有默认值,应将 pvDefault 设置为 NULL, cbDefault 应设置为零。 如果 grbit 已设置JET_bitColumnUserDefinedDefault, pvDefault 将解释为指向JET_USERDEFINEDDEFAULT结构的指针。 默认值不能大于 255 字节。 如果默认值大于 255 字节,则会以无提示方式截断。

cbDefault

pvDefault 指定的缓冲区的大小(以字节为单位)。

cp

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

columnid

成功后,新创建的列的列标识符将传回此字段中。 失败时,该值未定义。

犯 错

err 字段将包含创建此列的状态。 有关可能返回值的列表,请参阅 JetAddColumn

要求

要求

客户端

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

Server

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

标头

在 Esent.h 中声明。

Unicode

(Unicode ) 和 JET_COLUMNCREATE_A (ANSI) 实现为 JET_COLUMNCREATE_W

另请参阅

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