JetCreateTableColumnIndex4W 関数

適用対象: Windows |Windows Server

JetCreateTableColumnIndex4W 関数は、拡張ストレージ エンジン (ESE( データベース) にテーブルを作成します。このデータベースには、インデックスの初期セットと、JET_TABLECREATE3構造体の配列から列の初期セットが含まれます。 JET_TABLECREATE3構造体を使用すると、コールバック関数を指定できます。

JetCreateTableColumnIndex4W 関数は、Windows 8 オペレーティング システムで導入されました。

JET_ERR JET_API JetCreateTableColumnIndex4W(
  __in          JET_SESID sesid,
  __in          JET_DBID dbid,
  __in_out      JET_TABLECREATE3* ptablecreate
);

パラメーター

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

2 つの同じインデックスを定義しようとしました。

JET_errIndexHasPrimary

1 つのテーブルに対して複数のプライマリ インデックスを指定しようとしました。 テーブルには、プライマリ インデックスが 1 つだけ必要です。 プライマリ インデックスが指定されていない場合、データベース エンジンは透過的に作成します。

JET_errIndexInvalidDef

無効なインデックス定義が指定されました。 このエラーの原因として考えられる原因を次に示します。

  • プライマリ インデックスは条件付きです (つまり、JET_INDEXCREATE2 構造体の grbit メンバーにJET_bitIndexPrimary値が設定され、JET_INDEXCREATE2構造体の cConditionalColumn メンバーが 0 より大きい場合)。

  • Windows Server 2003 以降の Windows Server オペレーティング システムのバージョンに適用されます。 タプルの制限を持つタプル インデックスを作成しようとしましたが、JET_INDEXCREATE2構造体で ptuplelimits メンバーを渡さずに (つまり、JET_INDEXCREATE2 構造体の grbit メンバーにはJET_bitIndexTupleLimits値が設定されていますが、ptuplelimits ポインターは null です)。

  • JET_INDEXCREATE2構造体の szKey メンバーに無効なキー定義を渡します。 有効な定義については、「 JET_INDEXCREATE2」を参照してください。

  • JET_INDEXCREATE2cbVarSegMac メンバーをJET_cbPrimaryKeyMost値 (プライマリ インデックスの場合) より大きいか、JET_cbSecondaryKeyMost値 (セカンダリ インデックスの場合) より大きく設定します。

  • ユーザー定義 Unicode インデックス (JET_INDEXCREATE2 構造体のgrbit メンバーにJET_bitIndexUnicode値ビットが設定されているインデックス) に無効な組み合わせを渡します。 一般的な原因としては、JET_INDEXCREATE2構造体の pidxunicode メンバーが null であるか、pidxunicode 構造体で指定された LCID が無効です。

  • プライマリ インデックスに対して複数値の列を指定する。

  • インデックスを作成しようとしている条件列が多すぎます。 JET_INDEXCREATE2構造体の cConditionalColumn メンバーは、JET_ccolKeyMostより大きくすることはできません。

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 のバージョンに適用されます。 タプル インデックスは、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_errInvalidCodePage

JET_COLUMNCREATE構造体の cp メンバーが有効なコード ページに設定されていません。 テキスト列の有効な値は、英語 (1252) と Unicode (1200) のみです。 値 0 は、既定値 (英語、1252) が使用されることを意味します。

JET_errInvalidColumnType

JET_COLUMNCREATE構造体の coltyp メンバーが有効な列型に設定されていません。

JET_errInvalidCreateIndex

このエラーが発生する理由は次のとおりです。

  • JET_TABLECREATE2構造体の rgindexcreate メンバーが null に設定されました。

  • JET_TABLECREATE2 構造体の rgcolumncreate メンバーが null に設定されました。

  • JET_INDEXCREATE2構造体の cbStruct メンバーが有効な値に設定されませんでした。

JET_errInvalidgrbit

JET_TABLECREATE3構造体で grbit メンバーの無効な組み合わせが指定されました。

grbit メンバーに不整合な値が含まれているため、インデックス定義が無効です。 考えられる理由を次に示します。

  • プライマリ インデックスには、無視ビットが指定されています (つまり、JET_bitIndexIgnoreNull、JET_bitIndexIgnoreAnyNull、またはJET_bitIndexIgnoreFirstNull値を使用して値が渡JET_bitIndexPrimary)。

  • 空のインデックスでは、null メンバーは無視されません (つまり、JET_INDEXCREATE2 構造体の grbit メンバーにはJET_bitIndexEmpty値が設定されていますが、JET_bitIndexIgnoreAnyNull値が設定されていません)。

  • 無効な grbit メンバーを持つJET_CONDITIONALCOLUMN構造体を渡します。

JET_errInvalidLanguageId

無効なロケール ID (LCID) が渡されました (JET_INDEXCREATE2 構造体の pidxunicode メンバーが指すJET_UNICODEINDEX構造体の lcid メンバーを介するか、JET_INDEXCREATE2構造体の lcid フィールドを介して)。

JET_errInvalidParameter

無効なパラメーターが指定されました。 考えられる理由を次に示します。

  • JET_TABLECREATE3構造体の rgcolumncreate メンバーが null です。

  • JET_TABLECREATE2 構造体の rgcolumncreate メンバーに指定されたJET_COLUMNCREATE構造体の 1 つの cbStruct メンバーが sizeof( JET_COLUMNCREATE ) に設定されていませんでした。

  • JET_INDEXCREATE2構造体の cbKey メンバーは 0 に設定されます。

  • JET_INDEXCREATE2 構造体の cbStruct メンバーが sizeof( JET_INDEXCREATE2 ) に設定されていません。

JET_errRecordTooBig

レコードが大きすぎます。 すべての固定列のJET_COLUMNCREATE構造体の cbMax メンバーの合計は、特定の値を超えてはなりません。

JET_errTableDuplicate

テーブルは既に存在します。

JET_errTooManyColumns

テーブルに列を追加しようとしました。 テーブルには 、固定列JET_ccolFixedMost 以下、可変長列 JET_ccolVarMost 以下、およびタグ付き列 JET_ccolTaggedMost 以下を含めることができます。

JET_errUnicodeTranslationFail

Unicode 列の正規化が試行されたときにエラーが発生しました。 これは、システム リソースが不足していることが原因で発生する可能性があります。

JET_errSpaceHintsInvalid

JET スペース ヒント構造の要素が正しくないか、操作可能でなかった。

解説

JetCreateTableColumnIndex4W 関数は、列とインデックスの初期セットを含むテーブルを作成します。 JetAddColumnJetDeleteColumn、JetDeleteColumn2JetCreateIndex、JetCreateIndex2JetCreateIndex3JetCreateIndex4WJetDeleteIndex 関数を使用して、追加の列とインデックスを動的に追加および削除できます。

JetOpenTable 関数と同様に、返された tableid を使用してアプリケーションが完了すると、JetCloseTable 関数はアプリケーションを閉じる必要があります。

要件

要件

Client

Windows 8が必要です。

[サーバー]

Windows Server 2012が必要です。

Header

Esent.h で宣言されています。

Library

ESENT.lib を使用します。

[DLL]

ESENT.dllが必要です。

関連項目

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