JET_OPENTEMPORARYTABLE 結構
適用于: Windows |Windows Server
JET_OPENTEMPORARYTABLE 結構
JET_OPENTEMPORARYTABLE結構包含JET_OPENTEMPORARYTABLE函式參數的容易擴充集合。 這個結構是相當於 JET_TABLECREATE 結構的臨時表。
Windows Vista:JET_OPENTEMPORARYTABLE結構是在 Windows Vista 中引進。
typedef struct tagJET_OPENTEMPORARYTABLE {
unsigned long cbStruct;
const JET_COLUMNDEF* prgcolumndef;
unsigned long ccolumn;
JET_UNICODEINDEX* pidxunicode;
JET_GRBIT grbit;
JET_COLUMNID* prgcolumnid;
unsigned long cbKeyMost;
unsigned long cbVarSegMac;
JET_TABLEID tableid;
} JET_OPENTEMPORARYTABLE;
成員
cbStruct
此結構的大小,以位元組為單位, (以供日後擴充) 。 它必須設定為 sizeof ( JET_TABLECREATE ) 以位元組為單位。
prgcolumndef
臨時表中建立之資料行的資料行定義。
資料行定義選項具有與臨時表搭配使用的重要限制。 如需詳細資訊,請參閱<備註>一節。
除了一般資料行定義選項之外,您也可以指定下列零個或多個選項,這些選項只與臨時表的內容相關。
值 |
意義 |
---|---|
JET_bitColumnTTDescending |
臨時表索引鍵資料行的排序次序應該遞減,而不是遞增。 如果未指定此選項,JET_bitColumnTTKey則會忽略此選項。 |
JET_bitColumnTTKey |
資料行將是臨時表的索引鍵資料行。 在輸入陣列中指定這個選項的資料行定義順序,將決定臨時表每個索引鍵資料行的優先順序。 陣列中具有此選項組的第一個資料行定義將是最重要的索引鍵資料行等等。 如果要求的索引鍵資料行數目超過資料庫引擎所能支援的索引鍵資料行,則會針對不支援的索引鍵資料行忽略此選項。 |
ccolumn
請參閱 prgcolumndef。
pidxunicode
用來比較臨時表中任何 Unicode 索引鍵資料行資料的地區設定識別碼和正規化旗標。
當此參數不存在且 lcid 參數不存在時,則會使用預設 LCID 來比較臨時表中的任何 Unicode 索引鍵資料行。 預設 LCID 是美式英文地區設定。
當此參數不存在時,將會使用預設正規化旗標來比較暫存資料表中的任何 Unicode 索引鍵資料行資料。 預設正規化旗標為:NORM_IGNORECASE、NORM_IGNOREKANATYPE和NORM_IGNOREWIDTH。
grbit
指定下列零個或多個選項的位群組。
值 |
意義 |
---|---|
JET_bitTTIndexed |
此選項要求臨時表有足夠的彈性,以允許使用 JetSeek 依索引鍵查閱記錄。 如果這項功能不需要,最好不要要求它。 如果未要求這項功能,臨時表管理員可能會選擇管理臨時表的策略,以提升效能。 |
JET_bitTTUnique |
要求將具有重複索引鍵的記錄從臨時表中的最後一組記錄中移除。 在 Windows Server 2003 之前,資料庫引擎一律假設此選項生效,因為所有叢集索引也必須是主鍵,因此必須是唯一的。 從 Windows Server 2003 開始,現在可以建立臨時表,該臨時表不會在指定JET_bitTTForwardOnly選項時移除重複專案。 通常無法知道哪些重複專案會成功,而且會捨棄哪些重複專案。 不過,當要求JET_bitTTErrorOnDuplicateInsertion選項時,要插入暫存資料表中具有指定索引鍵的第一筆記錄一律會成功。 |
JET_bitTTUpdatable |
要求臨時表有足夠的彈性,以允許先前插入的記錄後續變更。 如果這項功能不需要,最好不要要求它。 如果未要求這項功能,臨時表管理員可能會選擇管理臨時表的策略,以提升效能。 |
JET_bitTTScrollable |
要求臨時表有足夠的彈性,以允許使用 JetMove任意順序和方向掃描記錄。 如果不需要這項功能,最好不要要求此功能。 如果未要求這項功能,臨時表管理員可能會選擇管理臨時表的策略,以提升效能。 |
JET_bitTTSortNullsHigh |
要求 Null 索引鍵資料行值比非 Null 索引鍵資料行值更接近索引結尾。 |
JET_bitTTForceMaterialization |
強制臨時表管理員放棄搜尋最佳策略,以使用管理會導致增強效能的臨時表。 |
JET_bitTTErrorOnDuplicateInsertion |
任何嘗試使用與先前插入的記錄相同的索引鍵來插入記錄,都會立即失敗,並出現JET_errKeyDuplicate。 如果未要求此選項,則會立即偵測重複專案並失敗,或稍後會以無訊息方式移除,視資料庫引擎選擇的策略而定,根據要求的功能實作臨時表。 如果這項功能不需要,最好不要要求它。 如果未要求這項功能,臨時表管理員可能會選擇管理臨時表的策略,以提升效能。 |
JET_bitTTForwardOnly |
只有在臨時表管理員可以使用針對中繼查詢結果優化的實作時,才會建立臨時表。 如果臨時表的任何特性會防止使用此優化,則作業將會失敗並JET_errCannotMaterializeForwardOnlySort。 此選項的副作用是允許臨時表包含具有重複索引鍵的記錄。 如需詳細資訊,請參閱JET_bitTTUnique。 Windows Server 2003: 此選項僅適用于 Windows Server 2003 和更新版本。 |
prgcolumnid
輸出緩衝區,接收建立臨時表期間所產生的資料行識別碼陣列。
此陣列中的資料行識別碼會完全符合資料行定義的輸入陣列。 因此,此緩衝區的大小必須對應至輸入陣列的大小。
cbKeyMost
代表指定資料列之索引鍵的大小上限。
可以設定金鑰大小上限,以控制金鑰的截斷方式。 索引鍵截斷很重要,因為它可能會影響資料列視為相異時。
如果此參數設定為 0 或 JET_cbKeyMostMin (255) ,則金鑰大小上限及其語意會與 Windows Server 2003 和舊版支援的金鑰大小上限相同。 此參數也可以設定為較大的值,做為實例的資料庫頁面大小函式 (JET_paramDatabasePageSize) 。 如需詳細資訊,請參閱JET_paramKeyMost。
cbVarSegMac
將用於任何可變長度資料行的資料量上限,以建構指定資料列的索引鍵。
此參數可用來控制任何指定索引鍵資料行所耗用的索引鍵空間量。 此限制是以位元組為單位。 如果此參數為零或與 cbKeyMost 參數相同,則不會有任何限制。
tableid
因為成功呼叫 JetOpenTemporaryTable而建立之臨時表的資料表控制碼。
規格需求
需求 | 值 |
---|---|
用戶端 |
需要 Windows Vista。 |
Server |
需要 Windows Server 2008。 |
標頭 |
在 Esent.h 中宣告。 |
另請參閱
JET_TABLECREATE
JET_COLUMNDEF
JET_UNICODEINDEX
JET_GRBIT
JET_COLUMNID
JET_TABLEID
JetOpenTemporaryTable
可延伸儲存引擎系統參數