JetCreateIndex3 函数
适用于: Windows |Windows Server
JetCreateIndex3 函数
JetCreateIndex3 函数针对 ESE 数据库中的数据创建索引,可用于快速查找特定数据。
Windows 7:JetCreateIndex3 在 Windows 7 操作系统中引入。
JET_ERR JET_API JetCreateIndex3(
__in JET_SESID sesid,
__in JET_TABLEID tableid,
__in JET_INDEXCREATE2* pindexcreate,
__in unsigned long cIndexCreate
);
参数
sesid
用于 API 调用的数据库会话上下文。
tableid
要创建索引的表。
pindexcreate
包含JET_INDEXCREATE2结构的数组,其中每个结构都定义要创建的索引。
cIndexCreate
pindexcreate 数组中的元素数。
返回值
此函数返回具有以下返回代码之一 的JET_ERR 数据类型。 有关可能的 ESE 错误的详细信息,请参阅 可扩展存储引擎错误 和 错误处理参数。
返回代码 |
说明 |
---|---|
JET_errSuccess |
操作已成功完成。 |
JET_errCannotIndex |
尝试对托管更新列或 SLV 列编制索引, (请注意,SLV 列) 已弃用。 |
JET_errColumnNotFound |
尝试对不存在的列编制索引。 尝试对不存在的列进行有条件索引也可能产生此错误。 |
JET_errDensityInvalid |
如果将 JET_INDEXCREATE2 结构的 ulDensity 成员设置为小于 20 或大于 100 的数字,将返回此错误。 |
JET_errIndexDuplicate |
尝试定义两个相同的索引。 |
JET_errIndexHasPrimary |
尝试为一个表指定多个主索引。 一个表必须恰好有一个主索引。 如果未指定主索引,则数据库引擎将以透明方式创建一个主索引。 |
JET_errIndexInvalidDef |
指定的索引定义无效。 以下是收到此错误的一些可能原因:
|
JET_errIndexTuplesInvalidLimits |
Windows XP 和更高版本的 Windows。 指定了 JET_TUPLELIMITS 结构,不支持其限制。 请参阅 JET_TUPLELIMITS 结构的备注部分。 |
JET_errIndexTuplesNonUniqueOnly |
Windows XP 和更高版本的 Windows。 元组索引不能是唯一的, (grbit 不能同时设置JET_bitIndexTuples和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_errInvalidgrbit |
索引定义无效,因为 JET_INDEXCREATE2 结构的 grbit 成员包含不一致的值。 下面是一些可能的原因:
(一次创建多个索引时,如果 cIndexCreate 参数大于一个) ,则任何索引都不能包含以下任何位:
|
JET_errInvalidLanguageId |
(LCID) 传递的区域设置 ID 无效, (通过 JET_UNICODEINDEX 结构中的 lcid 成员(JET_INDEXCREATE2 结构中的 pidxunicode 成员包含指向的指针)或通过 JET_INDEXCREATE2 结构的 lcid 成员) 传递。 |
JET_errInvalidName |
指定的索引名称无效。 有关详细信息 ,请参阅JET_INDEXCREATE2 。 |
JET_errInvalidParameter |
将无效参数传递到 API 中。 以下是可能返回此错误的一些原因:
|
JET_errUnicodeTranslationFail |
尝试规范化 Unicode 列时出错。 这可由系统资源耗尽导致。 |
JET_errSpaceHintsInvalid |
JET 空间提示结构的元素不正确或不可操作。 |
备注
成功完成指定的所有索引后,将JET_errSuccess返回值。
JetCreateIndex3 循环访问 pindexcreate 中给定的索引,有时会在第一次失败时中止。 即使JET_INDEXCREATE2结构的错误成员包含JET_errSuccess,第一个索引之后的任何索引也可能不会尝试。
要求
要求 | 值 |
---|---|
客户端 |
需要 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 |
实现为 JetCreateIndex3W (Unicode) 和 JetCreateIndex3A (ANSI) 。 |
另请参阅
JET_CONDITIONALCOLUMN
JET_ERR
JET_GRBIT
JET_SESID
JET_TABLEID
JET_INDEXCREATE2
JetCreateIndex
JetCreateTableColumnIndex
JetCreateTableColumnIndex2
JET_SPACEHINTS