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 |
2 つの同じインデックスを定義しようとしました。 |
JET_errIndexHasPrimary |
1 つのテーブルに対して複数のプライマリ インデックスを指定しようとしました。 テーブルには、プライマリ インデックスが 1 つだけ必要です。 プライマリ インデックスが指定されていない場合、データベース エンジンは透過的に作成します。 |
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。 タプル インデックスは、1 つの列に対してのみ指定できます (つまり、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 パラメーターが 1 より大きい場合)、どのインデックスにも次のビットが含まれていない可能性があります。
|
JET_errInvalidLanguageId |
無効なロケール ID (LCID) が渡されました (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構造体の err メンバーにJET_errSuccessが含まれている場合でも、エラーを含む最初のインデックスの後のインデックスは試行されていない可能性があります。
必要条件
要件 | 値 |
---|---|
Client |
Windows Vista、Windows XP、または Windows 2000 Professional が必要です。 |
[サーバー] |
Windows Server 2008、Windows Server 2003、または Windows 2000 Server が必要です。 |
Header |
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