JetCreateTableColumnIndex2 関数
適用対象: Windows |Windows Server
JetCreateTableColumnIndex2 関数
JetCreateTableColumnIndex2 関数は、インデックスの初期セットと、JET_TABLECREATE2構造体の配列から列の初期セットを含むテーブルを ESE データベースに作成します。 JET_TABLECREATE2構造体を使用すると、コールバック関数を指定できます。
Windows XP: JetCreateTableColumnIndex2 は Windows XP で導入されました。
JET_ERR JET_API JetCreateTableColumnIndex2(
__in JET_SESID sesid,
__in JET_DBID dbid,
__in_out JET_TABLECREATE2* ptablecreate
);
パラメーター
sesid
API 呼び出しに使用するデータベース セッション コンテキスト。
dbid
API 呼び出しに使用するデータベース識別子。
ptablecreate
作成するテーブルを定義する JET_TABLECREATE2 構造体へのポインター。 詳細については、「 JET_TABLECREATE2 」を参照してください。
戻り値
この関数は、次のいずれかの戻りコードを 使用して、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 |
冗長列を追加しようとしました。 1 つ以上の自動作成列は存在せず、テーブルごとに 1 つ以上のバージョン列は存在しない必要があります。 |
JET_errDensityInvalid |
このエラーは、JET_INDEXCREATE構造体の ulDensity メンバーが 20 未満または 100 を超える数値に設定されている場合に返されます。 |
JET_errDDLNotInheritable |
JET_TABLECREATE 構造体の szTemplateTableName メンバーにという名前のテーブルがテンプレート テーブルとしてマークされていないことを示します (つまり、そのテーブルにJET_bitTableCreateTemplateTableが設定されていません)。 |
JET_errIndexDuplicate |
2 つの同じインデックスを定義しようとしました。 |
JET_errIndexHasPrimary |
1 つのテーブルに対して複数のプライマリ インデックスを指定しようとしました。 テーブルには、プライマリ インデックスが 1 つだけ必要です。 プライマリ インデックスが指定されていない場合、データベース エンジンは透過的に作成します。 |
JET_errIndexInvalidDef |
無効なインデックス定義が指定されました。 このエラーを受け取る理由として、次の一部が考えられます。
|
JET_errIndexTuplesInvalidLimits |
Windows XP 以降。 JET_TUPLELIMITS構造体が指定されており、その制限はサポートされていません。 JET_TUPLELIMITS構造の解説セクションを参照してください。 |
JET_errIndexTuplesNonUniqueOnly |
Windows XP 以降。 タプル インデックスを一意にすることはできません (つまり、JET_INDEXCREATE構造体の grbit メンバーに JET_bitIndexPrimary とJET_bitIndexUniqueの両方を設定することはできません)。 |
JET_errIndexTuplesOneColumnOnly |
Windows XP 以降。 タプル インデックスは、1 つの列に対してのみ使用できます (つまり、JET_INDEXCREATE構造体の grbit メンバーがJET_bitIndexTuples設定されていて、JET_INDEXCREATE構造体の szKey メンバーが複数の列を指定している場合)。 |
JET_errIndexTuplesSecondaryIndexOnly |
Windows XP 以降。 タプル インデックスをプライマリ インデックスにすることはできません (つまり、JET_INDEXCREATE 構造体の grbit メンバーに JET_bitIndexPrimary とJET_bitIndexTuplesの両方を設定することはできません)。 |
JET_errIndexTuplesTextColumnsOnly |
Windows XP 以降。 タプル インデックスは、テキスト列または Unicode 列にのみ使用できます。 他の列 (バイナリ列など) のインデックスを作成しようとすると、JET_errIndexTuplesTextColumnsOnlyが発生します。 |
JET_errIndexTuplesVarSegMacNotAllowed |
Windows XP 以降。 タプル インデックスでは、JET_INDEXCREATE構造体の cbVarSegMac メンバーを設定できません。 |
JET_errInTransaction |
トランザクション中に、バージョン情報のないインデックスを作成しようとしました。 |
JET_errInvalidCodePage |
JET_COLUMNCREATE構造体の cp メンバーが有効なコード ページに設定されていません。 テキスト列の有効な値は、英語 (1252) と Unicode (1200) のみです。 値 0 は、既定値 (英語、1252) が使用されることを意味します。 |
JET_errInvalidColumnType |
JET_COLUMNCREATE構造体の coltyp メンバーが有効な列型に設定されていません。 |
JET_errInvalidCreateIndex |
このエラーが発生する理由の一部を次に示します。
|
JET_errInvalidgrbit |
grbit メンバーの無効な組み合わせが、JET_TABLECREATEまたはJET_TABLECREATE2で指定されました。 grbit メンバーに不整合な値が含まれているため、インデックス定義が無効です。 考えられる理由は次のとおりです。
|
JET_errInvalidLanguageId |
無効なロケール ID (LCID) が渡されました (JET_INDEXCREATE構造体の pidxunicode メンバーが指すJET_UNICODEINDEX構造体の lcid メンバーを介するか、JET_INDEXCREATE構造体の lcid フィールドを介して)。 |
JET_errInvalidParameter |
無効なパラメーターが指定されました。 考えられる理由は次のとおりです。
|
JET_errRecordTooBig |
レコードが大きすぎます。 すべての固定列のJET_COLUMNCREATE構造体の cbMax メンバーの合計は、特定の値を超えてはなりません。 |
JET_errTableDuplicate |
テーブルは既に存在します。 |
JET_errTooManyColumns |
テーブルに列を追加しようとしました。 テーブルには、固定列JET_ccolFixedMost以下、可変長列JET_ccolVarMost以下、およびタグ付き列JET_ccolTaggedMost以下を含めることができます。 |
JET_errUnicodeTranslationFail |
Unicode 列の正規化中にエラーが発生しました。 これは、システム リソースが不足していることが原因で発生する可能性があります。 |
解説
JetCreateTableColumnIndex2 という名前は、オブジェクトの作成順序に由来します。最初にテーブル、列、最後にインデックスを作成します。 JetCreateTableColumnIndex2 は、列とインデックスの初期セットを含むテーブルを作成します。 JetAddColumn、JetDeleteColumn、JetDeleteColumn2、JetCreateIndex、JetCreateIndex2、および JetDeleteIndex を使用して、追加の列とインデックスを動的に追加および削除できます。
JetOpenTable と同様に、返された tableid を使用してアプリケーションを実行する場合は、通常、JetCloseTable を使用して閉じる必要があります。
必要条件
要件 | 値 |
---|---|
Client |
Windows Vista または Windows XP が必要です。 |
[サーバー] |
Windows Server 2008 または Windows Server 2003 が必要です。 |
Header |
Esent.h で宣言されています。 |
Library |
ESENT.lib を使用します。 |
[DLL] |
ESENT.dllが必要です。 |
Unicode |
JetCreateTableColumnIndex2W (Unicode) および JetCreateTableColumnIndex2A (ANSI) として実装されます。 |
参照
JET_CBTYP
JET_DBID
JET_ERR
JET_GRBIT
JET_INDEXCREATE
JET_SESID
JET_TABLEID
JET_TABLECREATE
JET_TABLECREATE2
JET_TUPLELIMITS
JetAddColumn
JetCreateIndex
JetCreateIndex2
JetCreateTable
JetCreateTableColumnIndex
JetDeleteColumn
JetDeleteColumn2