JET_COLUMNCREATE 结构
适用于: Windows |Windows Server
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 到 z,以及除感叹号 (!) 、逗号 (,) 、左方括号 ([) 和右方括号 (]) 以外的所有其他标点,即 ASCII 字符0x20,0x22 0x2d,0x2f到0x5a,0x5c,0x5d到0x7f。
- 它不能以空格开头。
- 它必须至少包含一个非空格字符。
coltyp
列的类型 (例如文本、二进制或数字) 。 有关详细信息,请参阅 JET_COLTYP。
cbMax
可变长度列的最大长度(以字节为单位)。 固定长度列的列的长度。
grbit
一组位,其中包含此结构的选项,其中包括零个或多个以下值。
值 |
含义 |
---|---|
JET_bitColumnFixed |
列是固定的。 无论列中存储了多少数据,它始终会在一行中使用相同的空间量。 JET_bitColumnFixed不能与 JET_bitColumnTagged 一起使用。 此位不能与长值(如 JET_coltypLongText 和 JET_coltypLongBinary)一起使用。 |
JET_bitColumnTagged |
列已标记。 如果标记列不包含数据,则不会占用数据库中的任何空间。 此位不能与JET_bitColumnFixed一起使用。 |
JET_bitColumnNotNULL |
列不得设置为 NULL 值。 |
JET_bitColumnAutoincrement |
列会自动递增。 该数字是一个递增的数字,保证在表中是唯一的。 但是,该数字可能不是连续的。 例如,如果将五行插入表中,则自动增加列可能包含值 { 1, 2, 6, 7, 8 }。 Windows 2000: 此位只能用于 JET_coltypLong类型的列。 Windows Server 2003 及更高版本: 此位只能用于 类型为 JET_coltypLong 或 JET_coltypCurrency 的列。 |
JET_bitColumnUpdatable |
此位仅在调用 JetGetColumnInfo 时有效。 |
JET_bitColumnTTKey |
此位仅在调用 JetOpenTempTable 时有效。 |
JET_bitColumnTTDescending |
此位仅在调用 JetOpenTempTable 时有效。 |
JET_bitColumnMultiValued |
列可以是多值列。 多值列可以有零个、一个或多个与之关联的值。 多值列中的各种值由各种结构的 itagSequence 成员标识,例如,JET_RETINFO、JET_SETINFO、JET_SETCOLUMN、JET_RETRIEVECOLUMN、JET_ENUMCOLUMNVALUE。 多值列必须是标记列;也就是说,它们不能是固定长度列或可变长度列。 |
JET_bitColumnEscrowUpdate |
该列是托管更新列。 托管更新列可由使用 JetEscrowUpdate 的不同会话同时更新,并保持事务一致性。
|
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_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
er 字段将包含创建此列的状态。 有关可能返回值的列表,请参阅 JetAddColumn 。
要求
要求 | 值 |
---|---|
客户端 |
需要 Windows Vista、Windows XP 或 Windows 2000 Professional。 |
服务器 |
需要 Windows Server 2008、Windows Server 2003 或 Windows 2000 Server。 |
标头 |
在 Esent.h 中声明。 |
Unicode |
作为 JET_COLUMNCREATE_W (Unicode) 和 JET_COLUMNCREATE_A (ANSI) 实现。 |
另请参阅
JET_COLTYP
JET_COLUMNID
JET_ERR
JET_GRBIT
JET_RETINFO
JET_SETINFO
JET_SETCOLUMN
JET_RETRIEVECOLUMN
JET_ENUMCOLUMNVALUE
JetAddColumn
JetCreateTableColumnIndex
JetCreateTableColumnIndex2
JetEscrowUpdate
JetRenameColumn
JetSetColumns