JetCreateTableColumnIndex3 函数
适用于: Windows |Windows Server
JetCreateTableColumnIndex3 函数
JetCreateTableColumnIndex3 函数在 ESE 数据库中创建一个表,其中包含一组初始索引和一组来自JET_TABLECREATE3结构数组的初始列。 JET_TABLECREATE3 结构允许指定回调函数。
Windows 7:JetCreateTableColumnIndex3 在 Windows 7 操作系统中引入。
JET_ERR JET_API JetCreateTableColumnIndex3(
__in JET_SESID sesid,
__in JET_DBID dbid,
__in_out JET_TABLECREATE3* ptablecreate
);
parameters
sesid
用于 API 调用的数据库会话上下文。
dbid
用于 API 调用的数据库标识符。
ptablecreate
指向 JET_TABLECREATE3 结构的指针,该结构定义要创建的表。 有关更多详细信息 ,请参阅JET_TABLECREATE3 。
返回值
此函数返回具有以下返回代码之一 的JET_ERR 数据类型。 有关可能的 ESE 错误的详细信息,请参阅 可扩展存储引擎错误 和 错误处理参数。
返回代码 |
说明 |
---|---|
JET_errSuccess |
操作已成功完成。 |
JET_errCallbackNotResolved |
无法解析回调函数。 可能未找到 DLL,或者未找到 DLL 中的函数。 启用足够的日志记录后,事件日志将提供更多详细信息。 |
JET_errCannotIndex |
尝试对托管更新列或 SLV 列编制索引 (请注意,SLV 列已弃用) 。 |
JET_errCannotNestDDL |
如果 ptablecreate-grbit> 指定JET_bitTableCreateTemplateTable,但 ptablecreate-szTemplateTableName> 设置为 NULL。 |
JET_errColumnDuplicate |
列已存在。 |
JET_errColumnNotFound |
尝试对不存在的列编制索引。 尝试对不存在的列进行条件索引也可能产生此错误。 |
JET_errColumnRedundant |
尝试添加冗余列。 每个表不应有一个以上的自动递增列和一个以上的版本列。 |
JET_errDensityInvalid |
如果JET_INDEXCREATE2结构的 ulDensity 成员设置为小于 20 或大于 100 的数字,将返回此错误。 |
JET_errDDLNotInheritable |
表示JET_TABLECREATE3结构的 szTemplateTableName 成员中名为 的表未标记为模板表, (也就是说,该表没有设置JET_bitTableCreateTemplateTable) 。 |
JET_errIndexDuplicate |
尝试定义两个相同的索引。 |
JET_errIndexHasPrimary |
尝试为表指定多个主索引。 一个表必须恰好有一个主索引。 如果未指定主索引,数据库引擎将以透明方式创建主索引。 |
JET_errIndexInvalidDef |
指定的索引定义无效。 以下是收到此错误的一些可能原因:
|
JET_errIndexTuplesInvalidLimits |
Windows XP 及更高版本的 Windows。 指定了 JET_TUPLELIMITS 结构,不支持其限制。 请参阅 JET_TUPLELIMITS 结构的备注部分。 |
JET_errIndexTuplesNonUniqueOnly |
Windows XP 及更高版本的 Windows。 元组索引不能是唯一 (也就是说,JET_INDEXCREATE2 结构的 grbit 成员不能同时设置JET_bitIndexPrimary和JET_bitIndexUnique) 。 |
JET_errIndexTuplesOneColumnOnly |
Windows XP 及更高版本的 Windows。 元组索引只能位于单个列 (也就是说,如果JET_INDEXCREATE2结构的 grbit 成员设置了JET_bitIndexTuples,并且JET_INDEXCREATE2结构的 szKey 成员指定了多个列) 。 |
JET_errIndexTuplesSecondaryIndexOnly |
Windows XP 及更高版本的 Windows。 元组索引不能是主索引 (也就是说,JET_INDEXCREATE2 结构的 grbit 成员不能同时设置JET_bitIndexPrimary和JET_bitIndexTuples) 。 |
JET_errIndexTuplesTextColumnsOnly |
Windows XP 及更高版本的 Windows。 元组索引只能位于文本或 Unicode 列上。 尝试为其他列编制索引 ((如二进制列) )将导致JET_errIndexTuplesTextColumnsOnly。 |
JET_errIndexTuplesVarSegMacNotAllowed |
Windows XP 及更高版本的 Windows。 元组索引不允许设置 JET_INDEXCREATE2 结构的 cbVarSegMac 成员。 |
JET_errInTransaction |
尝试在事务中创建没有版本信息的索引。 |
JET_errInvalidCodePage |
JET_COLUMNCREATE 结构的 cp 成员未设置为有效的代码页。 文本列的唯一有效值为英语 (1252) 和 Unicode (1200) 。 值为 0 表示将使用默认值 (英语、1252) 。 |
JET_errInvalidColumnType |
JET_COLUMNCREATE 结构的 coltyp 成员未设置为有效的列类型。 |
JET_errInvalidCreateIndex |
下面是发生此错误的一些原因:
|
JET_errInvalidgrbit |
在 JET_TABLECREATE3 中指定了无效的 grbit 成员组合。 索引定义无效,因为 grbit 成员包含不一致的值。 下面是一些可能的原因:
|
JET_errInvalidLanguageId |
(LCID) 传递的区域设置 ID 无效, (通过JET_INDEXCREATE2结构中的 pidxunicode 成员指向的 JET_UNICODEINDEX 结构的 lcid 成员,或通过 JET_INDEXCREATE2 结构的 lcid 字段) 传递。 |
JET_errInvalidParameter |
提供了无效的参数。 下面是一些可能的原因:
|
JET_errRecordTooBig |
记录太大了。 所有固定列的 JET_COLUMNCREATE 结构的 cbMax 成员之和不得超过特定值。 |
JET_errTableDuplicate |
该表已存在。 |
JET_errTooManyColumns |
尝试向表添加过多列。 一个表的固定列不能超过 JET_ccolFixedMost,长度不多于JET_ccolVarMost个可变列,并且不能超过JET_ccolTaggedMost个标记列。 |
JET_errUnicodeTranslationFail |
尝试规范化 Unicode 列时出错。 这可由系统资源耗尽导致。 |
JET_errSpaceHintsInvalid |
JET 空间提示结构的元素不正确或不可操作。 |
备注
名称 JetCreateTableColumnIndex3 来自对象的创建顺序:它首先创建表、列,最后创建索引。 JetCreateTableColumnIndex3 创建包含一组初始列和索引的表。 可以使用 JetAddColumn、JetDeleteColumn、JetDeleteColumn2、JetCreateIndex、JetCreateIndex2、JetCreateIndex3 和 JetDeleteIndex 动态添加和删除其他列和索引。
与 JetOpenTable 一样,使用返回的 tableid 完成应用程序时,通常应使用 JetCloseTable 将其关闭。
要求
要求 | 值 |
---|---|
客户端 |
需要 Windows Vista 或 Windows XP。 |
服务器 |
需要 Windows Server 2008 或 Windows Server 2003。 |
标头 |
在 Esent.h 中声明。 |
Library |
使用 ESENT.lib。 |
DLL |
需要ESENT.dll。 |
Unicode |
实现为 JetCreateTableColumnIndex3W (Unicode) 和 JetCreateTableColumnIndex3A (ANSI) 。 |
另请参阅
JET_CBTYP
JET_DBID
JET_ERR
JET_GRBIT
JET_INDEXCREATE
JET_INDEXCREATE2
JET_SESID
JET_TABLEID
JET_TABLECREATE2
JET_TABLECREATE3
JET_TUPLELIMITS
JetAddColumn
JetCreateIndex
JetCreateIndex2
JetCreateIndex3
JetCreateTable
JetCreateTableColumnIndex
JetDeleteColumn
JetDeleteColumn2