JET_COLUMNBASE 结构

适用于: Windows |Windows Server

JET_COLUMNBASE 结构

JET_COLUMNBASE 结构描述基列的参数。 JetGetColumnInfoJetGetTableColumnInfo 函数使用 JET_COLUMNBASE 结构。

    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];
    } JET_COLUMNBASE;

成员

cbStruct

此结构的大小(以字节为单位)。 将 cbStruct 设置为 sizeof ( JET_COLUMNBASE ) 。

columnid

保留。 将 columnid 设置为 0 (零) 。

coltyp

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

wCountry

保留。 将 设置为 0 (零) 。

langid

保留。 将 设置为 0 (零) 。

cp

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

wFiller

保留。 将 设置为 0 (零) 。

cbMax

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

grbit

列的选项,包括以下零个或多个值。

含义

JET_bitColumnFixed

该列是固定的,无论它包含多少数据,该列在一行中占用相同的空间量。 JET_bitColumnFixed不能与JET_bitColumnTagged结合使用,并且当 coltyp 成员设置为 JET_coltypLongTextJET_coltypLongBinary 时,不能使用。

JET_bitColumnTagged

仅当列包含数据时,才会标记该列并占用数据库中的空间。 JET_bitColumnTagged不能与JET_bitColumnFixed、JET_bitColumnVersion或JET_bitColumnEscrowUpdate结合使用。

JET_bitColumnNotNULL

列不得设置为 NULL 值。

JET_bitColumnNotNULL不能与 JET_bitColumnUserDefinedDefault 结合使用。

JET_bitColumnVersion

该列是一个版本列,用于指定行的版本。 此列的值从零开始,每次更新行时都会自动递增。

仅当 coltyp 成员设置为 JET_coltypLong 并且不能与 JET_bitColumnAutoincrement、 JET_bitColumnEscrowUpdate 、JET_bitColumnTagged 或 JET_bitColumnUserDefinedDefault 结合使用时,才能使用 JET_bitColumnVersion。

JET_bitColumnAutoincrement

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

仅当 coltyp 成员设置为 JET_coltypLongJET_coltypCurrency 且不能与 JET_bitColumnEscrowUpdate、JET_bitColumnUserDefinedDefault 或 JET_bitColumnVersion 结合使用时,才能使用 JET_bitColumnAutoincrement。

Windows 2000: 仅当 coltyp 成员设置为 JET_coltypLong 时,才能使用 JET_bitColumnVersion

JET_bitColumnUpdatable

仅适用于对 JetGetColumnInfo 的调用。 JET_bitColumnUpdatable不能与JET_bitColumnUserDefinedDefault结合使用。

JET_bitColumnTTKey

仅在调用 JetOpenTable 时有效。

JET_bitColumnTTDescending

仅在调用 JetOpenTempTable 时有效。

JET_bitColumnMultiValued

列可以是多值列。 多值列可以具有零个、一个或多个与之关联的值。 多值列中的各种值由各种结构的 itagSequence 成员中的数字标识,例如,JET_RETINFOJET_SETINFO、JET_SETCOLUMNJET_RETRIEVECOLUMN、JET_ENUMCOLUMNVALUE 多值列必须是标记列;也就是说,它们可能不是固定长度列或可变长度列。

JET_bitColumnEscrowUpdate

指定列是托管更新列,可通过 JetEscrowUpdate 的不同会话同时进行更新,并且具有事务一致性。

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

  • 对于托管更新列,必须将 coltyp 成员设置为 JET_coltypLong。

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

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

JET_bitColumnUnversioned

创建时不带版本号的列。 这意味着尝试添加同名列的其他事务将失败。 JET_bitColumnUnversioned仅用于 JetAddColumn。 它不能在事务中使用。

JET_bitColumnMaybeNull

保留供将来使用。

JET_bitColumnMaybeNull不能与 JET_bitColumnUserDefinedDefault 结合使用。

JET_bitColumnFinalize

请勿使用。 请改用 JET_bitColumnDeleteOnZero。

该列可以完成。 可以最终完成的列是托管更新列,当列达到零时,该列会导致删除行。 将来的版本可能会调用回调函数, (请参阅 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_bitColumnUserDefinedDefault组合使用,也不能与用户定义的默认列一起使用。

szBaseTableName

当前表从中继承其 DDL 的表。

szBaseColumnName

模板表中列的名称。

备注

JET_COLUMNBASE 包含 与 JET_COLUMNDEF 大致相同的信息,但如果) 使用分层 DDL,它会添加字符串字段来描述基表 (。

要求

要求

客户端

需要 Windows Vista、Windows XP 或 Windows 2000 专业版。

服务器

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

标头

在 Esent.h 中声明。

Unicode

JET_COLUMNBASE_W (Unicode) 和 JET_COLUMNBASE_A (ANSI) 实现。

另请参阅

JET_CALLBACK
JET_COLTYP
JET_COLUMNDEF
JET_COLUMNID
JET_GRBIT
JET_SESID
JET_TABLEID
JET_USERDEFINEDDEFAULT
JetGetColumnInfo
JetGetTableColumnInfo
JetRenameColumn