JetCreateTableColumnIndex2 函式
適用于: Windows |Windows Server
JetCreateTableColumnIndex2 函式
JetCreateTableColumnIndex2函式會在具有一組初始索引的 ESE 資料庫中建立資料表,以及來自JET_TABLECREATE2結構陣列的初始資料行集。 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 錯誤的詳細資訊,請參閱 可延伸儲存引擎錯誤 和 錯誤處理參數。
傳回碼 |
Description |
---|---|
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_INDEXCREATE結構的ulDensity成員設定為小於 20 或大於 100 的數位,就會傳回此錯誤。 |
JET_errDDLNotInheritable |
表示JET_TABLECREATE結構 szTemplateTableName成員中名為 的資料表不是標示為範本資料表 (也就是說,該資料表未設定) JET_bitTableCreateTemplateTable。 |
JET_errIndexDuplicate |
嘗試定義兩個相同的索引。 |
JET_errIndexHasPrimary |
嘗試為數據表指定一個以上的主索引。 資料表必須只有一個主要索引。 如果未指定主索引,資料庫引擎就會以透明方式建立一個。 |
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 和更新版本。 Tuple 索引只能超過單一資料行 (,也就是說,如果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 和更新版本。 Tuple 索引不允許設定JET_INDEXCREATE結構的cbVarSegMac成員。 |
JET_errInTransaction |
嘗試在交易中建立不含版本資訊的索引。 |
JET_errInvalidCodePage |
JET_COLUMNCREATE結構的cp成員未設定為有效的字碼頁。 文字資料行的唯一有效值為英文 (1252) 和 Unicode (1200) 。 值為 0 表示預設值將用於英文、1252) (。 |
JET_errInvalidColumnType |
JET_COLUMNCREATE結構的coltyp成員未設定為有效的資料行類型。 |
JET_errInvalidCreateIndex |
此錯誤可能發生的一些原因:
|
JET_errInvalidgrbit |
在JET_TABLECREATE或JET_TABLECREATE2中指定了不正確grbit成員組合。 索引定義無效,因為 grbit 成員包含不一致的值。 一些可能的原因如下:
|
JET_errInvalidLanguageId |
(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關閉。
規格需求
需求 | 值 |
---|---|
用戶端 |
需要 Windows Vista 或 Windows XP。 |
Server |
需要 Windows Server 2008 或 Windows Server 2003。 |
標頭 |
在 Esent.h 中宣告。 |
程式庫 |
使用 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