JetAddColumn 関数

適用対象: Windows |Windows Server

JetAddColumn 関数

JetAddColumn 関数は、ESE データベース内の既存のテーブルに新しい列を追加します。

    JET_ERR JET_API JetAddColumn(
      __in          JET_SESID sesid,
      __in          JET_TABLEID tableid,
      __in          JET_PCSTR szColumnName,
      __in          const JET_COLUMNDEF* pcolumndef,
      __in_opt      const void* pvDefault,
      __in          unsigned long cbDefault,
      __out_opt     JET_COLUMNID* pcolumnid
    );

パラメーター

sesid

API 呼び出しに使用するデータベース セッション コンテキスト。

tableid

列を追加するテーブル。

szColumnName

追加する列の名前。 名前は次の条件を満たしている必要があります。

  • 終端 の NULL を含めず、長さがJET_cbNameMost文字未満である必要があります。

  • 0 から 9、A から Z、a から z、およびその他のすべての句読点 (感嘆符 (!)、コンマ (、)、始め角かっこ ([))、閉じ角かっこ (]) (ASCII 文字0x20、0x2d 0x22、0x2fから0x5a、0x5c 0x5d、0x7fを除く) の文字のみを含める必要があります。

  • スペースで始めることはできません。

  • 少なくとも 1 つの非スペース文字を含む必要があります。

pcolumndef

列に格納できるデータを定義する JET_COLUMNDEF 構造体へのポインター。

pvDefault

列の既定値を含むバッファーへのポインター。 バッファーの長さは cbDefault です。 既定値がない場合は、 pvDefaultNULL に設定し、 cbDefault を 0 に設定します。 既定値は、固定列の場合はJET_cbColumnMostバイト、長い値の場合はJET_cbLVDefaultValueMostバイトを超えることはできません。 既定値がそれより大きい場合は、自動的に切り捨てられます。

grbit にJET_bitColumnUserDefinedDefaultが設定されている場合、pvDefaultJET_USERDEFINEDDEFAULT構造体へのポインターとして解釈されます。

cbDefault

pvDefault で指定されたバッファーのサイズ (バイト単位)。

pcolumnid

JET_COLUMNID構造体へのポインター。成功すると、新しく作成された列の識別子を受け取ります。 失敗した場合、値は未定義です。

戻り値

この関数は、次のいずれかの戻りコードを 使用して、JET_ERR データ型を返します。 考えられる ESE エラーの詳細については、「 拡張ストレージ エンジン エラーエラー処理パラメーター」を参照してください。

リターン コード

説明

JET_errSuccess

操作に成功しました。

JET_errFixedDDL

固定 DDL テーブルのデータ定義を変更しようとしました。 固定 DDL を持つテーブルの例として、テンプレート テーブルがあります。

JET_errInvalidParameter

無効なパラメーターが API に渡されました。 無効なパラメーターの例を次に示します。

  • cbStruct メンバーで、JET_COLUMNDEF 構造体の間違ったサイズを渡します。

  • JET_bitColumnUserDefinedDefaultを渡しますが、 cbDefault を sizeof(JET_USERDEFINEDDEFAULT) に設定しません。

JET_errInTransaction

JET_bitColumnUnversioned ビット が設定された列を追加しようとしましたが、セッションは現在トランザクション内にあります。

JET_errColumnDuplicate

列は既に存在します。 バージョン情報のない列を追加しようとしましたが、その列は既に存在します。

JET_errTableNotEmpty

テーブルにはデータが含まれています。 エスクロー更新列は、空のテーブルにのみ追加できます。

JET_errRecordTooBig

レコードが大きすぎます。 固定列の cbMax パラメーターの合計は、特定の値を超えることはできません。

JET_errTooManyColumns

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

JET_errColumnRedundant

冗長列を追加しようとしました。 1 つ以上の自動作成列は存在せず、テーブルごとに 1 つ以上のバージョン列は存在しない必要があります。

JET_errCallbackNotResolved

コールバック関数を解決できませんでした。 DLL が見つからないか、DLL 内の関数が見つからない可能性があります。 十分なログ記録が有効になっている場合、イベント ログに詳細が表示されます。

JET_wrnColumnMaxTruncated

固定列または可変列の最大長 (cbMax) がJET_cbColumnMostより大きいことを示す警告。 この制限は、長い値 ( JET_coltypLongBinaryJET_coltypLongText) には適用されません。

JET_errInvalidName

無効な名前が szColumnName として渡されました。 制限の詳細については、 szColumnName の条件を参照してください。

JET_errInvalidColumnType

coltyp フィールドが有効な列型に設定されていません。

JET_errInvalidCodePage

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

JET_errTaggedNotNULL

JET_bitColumnNotNULLは、タグ付き列、長い値列、または SLV 列では使用できません。

JET_errInvalidgrbit

grbits の無効な組み合わせが指定されました。 このエラーの原因の一部を次に示します。

  • JET_bitColumnFixedタグ付けされた列、長い値列、または SLV 列で使用されました。

  • JET_bitColumnEscrowUpdate型が JET_coltypLong ではない列で使用されました。

  • JET_bitColumnEscrowUpdateが Version 列 (JET_bitColumnVersion) で使用されました。

  • JET_bitColumnEscrowUpdate AutoIncrememnt 列 (JET_bitColumnAutoincrement) で使用されました。

  • JET_bitColumnEscrowUpdate既定値を持たない列で使用されました (cbDefault は 0 に等しい)。

  • JET_bitColumnFinalize、Escrow Update 列ではない列で使用されました (JET_bitColumnEscrowUpdateが設定されていません)。

  • JET_bitColumnDeleteOnZero、Escrow Update 列ではない列で使用されました (JET_bitColumnEscrowUpdateが設定されていません)。

  • JET_bitColumnAutoincrementは、 JET_coltypLongされていない列で使用されました。

    Windows 2000: このエラー コードの理由は、Windows 2000 でのみ使用されます。

    JET_bitColumnAutoincrementは、JET_coltypLongでもJET_coltypCurrencyでもない列で使用されました。

    Windows XP: このエラー コードの理由は、Windows XP 以降のオペレーティング システムで使用されます。

  • JET_bitColumnVersionが JET_coltypLongされていない列で使用されました。

  • JET_bitColumnVersionが自動作成列で使用されました。

  • JET_bitColumnUserDefinedDefaultは、JET_bitColumnFixedと組み合わせて使用されました。

  • JET_bitColumnUserDefinedDefaultは、JET_bitColumnNotNULLと組み合わせて使用されました。

  • JET_bitColumnUserDefinedDefaultは、JET_bitColumnVersionと組み合わせて使用されました。

  • JET_bitColumnUserDefinedDefaultは、JET_bitColumnAutoincrementと組み合わせて使用されました。

  • JET_bitColumnUserDefinedDefaultは、JET_bitColumnUpdatableと組み合わせて使用されました。

  • JET_bitColumnUserDefinedDefaultは、JET_bitColumnEscrowUpdateと組み合わせて使用されました。

  • JET_bitColumnUserDefinedDefaultは、JET_bitColumnFinalizeと組み合わせて使用されました。

  • JET_bitColumnUserDefinedDefaultは、JET_bitColumnDeleteOnZeroと組み合わせて使用されました。

  • JET_bitColumnUserDefinedDefaultは、JET_bitColumnMaybeNullと組み合わせて使用されました。

  • JET_bitColumnUserDefinedDefaultは、タグ付けされていない列 (固定または変数) で使用されました。

JET_errMultiValuedColumnMustBeTagged

複数値列 (JET_bitColumnMultiValued) は、タグ付き列または長い値 (JET_coltypLongBinary または JET_coltypLongText) 列でのみ使用できます。

JET_errCannotBeTagged

列がタグ付けされていない可能性がある場合に、タグ付けされた列を使用しようとしました。 タグ付けされた列を禁止するための制約の一部を次に示します。

  • Escrow Update 列 (JET_bitColumnEscrowUpdate) は、タグ付けされた列または長い値 (JET_coltypLongBinary または JET_coltypLongText) 列では使用できません。

  • 自動作成列にタグが付かない場合があります。

  • バージョン列にタグが付かない場合があります。

JET_errExclusiveTableLockRequired

この操作には、テーブルに対する排他ロックが必要でした。

JET_wrnColumnMaxTruncated

固定列または可変列の最大長 (cbMax) がJET_cbColumnMostより大きいことを示す警告。 この制限は、長い値 ( JET_coltypLongBinaryJET_coltypLongText) には適用されません。

必要条件

要件

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

JetAddColumnW (Unicode) および JetAddColumnA (ANSI) として実装されます。

参照

JET_COLTYP
JET_COLUMNCREATE
JET_COLUMNDEF
JET_COLUMNID
JET_ERR
JET_GRBIT
JET_SESID
JET_TABLEID
JetCreateTableColumnIndex
JetCreateTableColumnIndex2