JetAddColumn 函数
适用于: Windows |Windows Server
JetAddColumn 函数
JetAddColumn 函数将新列添加到 ESE 数据库中的现有表中。
JET_ERR JET_API JetAddColumn(
__in JET_SESID sesid,
__in JET_TABLEID tableid,
__in JET_PCSTR szColumnName,
__in const JET_COLUMNDEF* pcolumndef,
__in_opt const void* pvDefault,
__in unsigned long cbDefault,
__out_opt JET_COLUMNID* pcolumnid
);
parameters
sesid
用于 API 调用的数据库会话上下文。
tableid
要向其添加列的表。
szColumnName
要添加的列的名称。 该名称必须满足以下条件:
长度必须少于 JET_cbNameMost 个字符, 不包括终止 NULL。
它只能包含以下集中的字符:0 到 9、A 到 Z、a 到 z、 以及除感叹号 (!) 、逗号 (、) 、左方括号 ([) 和右方括号 (]) 以外的所有其他标点,即 ASCII 字符0x20、0x22 0x2d、0x2f到0x5a、0x5c,以及通过0x7f 0x5d。
它不能以空格开头。
它必须至少包含一个非空格字符。
pcolumndef
指向 JET_COLUMNDEF 结构的指针,该结构定义可以存储在列中的数据。
pvDefault
指向包含列默认值的缓冲区的指针。 缓冲区的长度为 cbDefault。 如果没有默认值,请将 pvDefault 设置为 NULL , 将 cbDefault 设置为零。 对于固定列,默认值不能大于 JET_cbColumnMost 个字节,对于长值,默认值不能大于 JET_cbLVDefaultValueMost 个字节。 如果默认值大于该值,则会以无提示方式将其截断。
如果 grbit 已设置JET_bitColumnUserDefinedDefault, pvDefault 将被解释为指向 JET_USERDEFINEDDEFAULT 结构的指针。
cbDefault
pvDefault 中指定的缓冲区的大小(以字节为单位)。
pcolumnid
指向 JET_COLUMNID 结构的指针,如果成功,该结构将接收新创建的列的标识符。 失败时,该值未定义。
返回值
此函数返回具有以下返回代码之一 的JET_ERR 数据类型。 有关可能的 ESE 错误的详细信息,请参阅 可扩展存储引擎错误 和 错误处理参数。
返回代码 |
说明 |
---|---|
JET_errSuccess |
操作成功。 |
JET_errFixedDDL |
尝试修改固定 DDL 表的数据定义。 具有固定 DDL 的表的一个示例是模板表。 |
JET_errInvalidParameter |
将无效参数传递到 API 中。 无效参数的一些示例包括:
|
JET_errInTransaction |
尝试添加设置了 JET_bitColumnUnversioned 位的列,但会话当前位于事务中。 |
JET_errColumnDuplicate |
列已存在。 尝试添加没有版本信息的列,并且该列已存在。 |
JET_errTableNotEmpty |
表包含数据。 托管更新列只能添加到空表中。 |
JET_errRecordTooBig |
记录太大了。 固定列的 cbMax 参数之和不得超过特定值。 |
JET_errTooManyColumns |
尝试向表添加过多列。 一个表的固定列不能超过JET_ccolFixedMost个,长度不能超过JET_ccolVarMost个可变长度列,并且不能超过JET_ccolTaggedMost个标记列。 |
JET_errColumnRedundant |
尝试添加冗余列。 每个表不应有一个以上的自动递增列和一个以上的版本列。 |
JET_errCallbackNotResolved |
无法解析回调函数。 可能未找到 DLL,或者未找到 DLL 中的函数。 如果启用了足够的日志记录,事件日志将提供更多详细信息。 |
JET_wrnColumnMaxTruncated |
一个警告,指示固定列或变量列的最大长度 (cbMax) 大于 JET_cbColumnMost。 此限制不适用于 JET_coltypLongBinary和JET_coltypLongText) 的 长值 ( 。 |
JET_errInvalidName |
作为 szColumnName 传递了无效的名称。 有关限制的详细信息,请参阅 szColumnName 的条件。 |
JET_errInvalidColumnType |
coltyp 字段未设置为有效的列类型。 |
JET_errInvalidCodePage |
JET_COLUMNDEF 结构的 cp 参数未设置为有效的代码页。 文本列的唯一有效值为英语 (1252) 和 Unicode (1200) 。 值为 0 表示将使用默认值 (英语、1252) 。 |
JET_errTaggedNotNULL |
JET_bitColumnNotNULL不能与标记列、长值列或 SLV 列一起使用。 |
JET_errInvalidgrbit |
指定的 grbit 组合 无效。 此错误的一些原因包括:
|
JET_errMultiValuedColumnMustBeTagged |
多值列 (JET_bitColumnMultiValued) 只能在标记或长值 (JET_coltypLongBinary 或 JET_coltypLongText) 列上使用。 |
JET_errCannotBeTagged |
尝试使用标记的列时,可能未标记该列。 禁止标记列的一些约束包括:
|
JET_errExclusiveTableLockRequired |
此操作需要表上的独占锁。 |
JET_wrnColumnMaxTruncated |
指示固定列或可变列的最大长度 (cbMax) 大于JET_cbColumnMost的警告。 此限制不适用于JET_coltypLongBinary和JET_coltypLongText) 的长值 (。 |
要求
要求 | 值 |
---|---|
客户端 |
需要 Windows Vista、Windows XP 或 Windows 2000 Professional。 |
服务器 |
需要 Windows Server 2008、Windows Server 2003 或 Windows 2000 Server。 |
标头 |
在 Esent.h 中声明。 |
Library |
使用 ESENT.lib。 |
DLL |
需要ESENT.dll。 |
Unicode |
实现为 JetAddColumnW (Unicode) 和 JetAddColumnA (ANSI) 。 |
另请参阅
JET_COLTYP
JET_COLUMNCREATE
JET_COLUMNDEF
JET_COLUMNID
JET_ERR
JET_GRBIT
JET_SESID
JET_TABLEID
JetCreateTableColumnIndex
JetCreateTableColumnIndex2