Funzione JetCreateTableColumnIndex3

Si applica a: Windows | Windows Server

Funzione JetCreateTableColumnIndex3

La funzione JetCreateTableColumnIndex3 crea una tabella in un database ESE con un set iniziale di indici e un set iniziale di colonne da una matrice di strutture JET_TABLECREATE3 . La struttura JET_TABLECREATE3 consente di specificare una funzione di callback.

Windows 7:JetCreateTableColumnIndex3 viene introdotto nel sistema operativo Windows 7.

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

Parametri

sesid

Contesto della sessione di database da usare per la chiamata API.

dbid

Identificatore di database da usare per la chiamata API.

ptablecreate

Puntatore a una struttura JET_TABLECREATE3 che definisce la tabella da creare. Per altre informazioni, vedere JET_TABLECREATE3 .

Valore restituito

Questa funzione restituisce il tipo di dati JET_ERR con uno dei codici restituiti seguenti. Per altre informazioni sugli errori ESE possibili, vedere Errori del motore di archiviazione estendibili e parametri di gestione degli errori.

Codice restituito

Descrizione

JET_errSuccess

Operazione riuscita.

JET_errCallbackNotResolved

Impossibile risolvere la funzione di callback. La DLL potrebbe non essere stata trovata o la funzione nella DLL potrebbe non essere stata trovata. Con la registrazione sufficiente abilitata, il registro eventi fornisce altri dettagli.

JET_errCannotIndex

È stato eseguito un tentativo di indicizzazione su una colonna di aggiornamento di escrow o SLV (si noti che le colonne SLV sono deprecate).

JET_errCannotNestDDL

Se ptablecreate-grbit specifica JET_bitTableCreateTemplateTable, ma ptablecreate-szTemplateTableName>> è impostato su NULL.

JET_errColumnDuplicate

Esiste già una colonna.

JET_errColumnNotFound

È stato eseguito un tentativo di indicizzazione su una colonna non esistente. Il tentativo di indicizzare in modo condizionale una colonna non esistente può anche generare questo errore.

JET_errColumnRedundant

È stato effettuato un tentativo di aggiungere una colonna ridondante. Non deve essere presente più di una colonna autoincrement e non più di una colonna di versione per tabella.

JET_errDensityInvalid

Questo errore verrà restituito se il membro ulDensity della struttura JET_INDEXCREATE2 è impostato su un numero minore di 20 o più di 100.

JET_errDDLNotInheritable

Indica che la tabella denominata nel membro szTemplateTableName della struttura JET_TABLECREATE3 non è stata contrassegnata come tabella modello, ovvero quella tabella non ha JET_bitTableCreateTemplateTable impostata.

JET_errIndexDuplicate

È stato effettuato un tentativo di definire due indici identici.

JET_errIndexHasPrimary

È stato effettuato un tentativo di specificare più indici primari per una tabella. Una tabella deve avere esattamente un indice primario. Se non viene specificato alcun indice primario, il motore di database creerà in modo trasparente uno.

JET_errIndexInvalidDef

È stata specificata una definizione di indice non valida. Di seguito sono riportati alcuni dei possibili motivi per la ricezione di questo errore:

  • Un indice primario è condizionale, ovvero il membro grbit della struttura JET_INDEXCREATE2 ha JET_bitIndexPrimary set e cConditionalColumn membro della struttura JET_INDEXCREATE2 è maggiore di zero.

  • Windows Server 2003 e versioni successive di Windows. Tentativo di creare un indice di tupla con limiti di tupla, ma senza passare il membro ptuplelimits nella struttura JET_INDEXCREATE2 , ovvero il membro grbit della struttura JET_INDEXCREATE2 ha JET_bitIndexTupleLimits impostato, ma il puntatore ptuplelimits è NULL.

  • Passaggio di una definizione di chiave non valida nel membro szKey della struttura JET_INDEXCREATE2 . Per una discussione sulle definizioni valide, vedere JET_INDEXCREATE2 .

  • Impostando il membro cbVarSegMac in JET_INDEXCREATE2 essere maggiore di JET_cbPrimaryKeyMost (per un indice primario) o maggiore di JET_cbSecondaryKeyMost (per un indice secondario).

  • Passaggio di una combinazione non valida per un indice Unicode definito dall'utente (uno con il bit JET_bitIndexUnicode impostato nel membro grbit di JET_INDEXCREATE2). Alcune cause comuni includono il membro pidxunicode della struttura JET_INDEXCREATE2 è NULL o l'LCID specificato nella struttura pidxunicode non è valido.

  • Specifica di una colonna multivalore per un indice primario.

  • Tentativo di indicizzare troppe colonne condizionali. Il membro cConditionalColumn della struttura JET_INDEXCREATE2 non deve essere maggiore di JET_ccolKeyMost.

JET_errIndexTuplesInvalidLimits

Windows XP e versioni successive di Windows. È stata specificata una struttura JET_TUPLELIMITS e i relativi limiti non sono supportati. Vedere la sezione osservazioni della struttura JET_TUPLELIMITS .

JET_errIndexTuplesNonUniqueOnly

Windows XP e versioni successive di Windows. Un indice di tupla non può essere univoco, ovvero il membro grbit della struttura JET_INDEXCREATE2 non deve avere sia JET_bitIndexPrimary che JET_bitIndexUnique impostato.

JET_errIndexTuplesOneColumnOnly

Windows XP e versioni successive di Windows. Un indice di tupla può essere solo su una singola colonna, ovvero se il membro grbit della struttura JET_INDEXCREATE2 ha JET_bitIndexTuples impostato e il membro szKey della struttura di JET_INDEXCREATE2 specifica più di una colonna.

JET_errIndexTuplesSecondaryIndexOnly

Windows XP e versioni successive di Windows. Un indice tuple non può essere un indice primario, ovvero il membro grbit della struttura JET_INDEXCREATE2 non deve avere sia JET_bitIndexPrimary che JET_bitIndexTuples impostato.

JET_errIndexTuplesTextColumnsOnly

Windows XP e versioni successive di Windows. Un indice di tupla può essere solo in una colonna Unicode o di testo. Un tentativo di indicizzazione di altre colonne ,ad esempio colonne binarie, genera JET_errIndexTuplesTextColumnsOnly.

JET_errIndexTuplesVarSegMacNotAllowed

Windows XP e versioni successive di Windows. Un indice tuple non consente l'impostazione del membro cbVarSegMac della struttura JET_INDEXCREATE2 .

JET_errInTransaction

È stato eseguito un tentativo di creare un indice senza informazioni sulla versione durante una transazione.

JET_errInvalidCodePage

Il membro cp della struttura JET_COLUMNCREATE non è stato impostato su una tabella codici valida. Gli unici valori validi per le colonne di testo sono inglese (1252) e Unicode (1200). Un valore pari a 0 indica che il valore predefinito verrà usato (inglese, 1252).

JET_errInvalidColumnType

Il membro coltyp della struttura JET_COLUMNCREATE non è stato impostato su un tipo di colonna valido.

JET_errInvalidCreateIndex

Di seguito sono riportati alcuni motivi per cui questo errore può verificarsi:

  • Il membro rgindexcreate della struttura JET_TABLECREATE2 è stato impostato su NULL.

  • Il membro rgcolumncreate della struttura JET_TABLECREATE2 è stato impostato su NULL.

  • Il membro cbStruct di una struttura JET_INDEXCREATE2 non è stato impostato su un valore valido.

JET_errInvalidgrbit

Una combinazione non valida di membri grbit è stata specificata in JET_TABLECREATE3.

La definizione dell'indice non è valida perché il membro grbit contiene valori incoerenti. Di seguito sono riportati alcuni possibili motivi:

  • Per un indice primario è stato specificato un bit ignorato, ovvero JET_bitIndexPrimary è stato passato con JET_bitIndexIgnoreNull, JET_bitIndexIgnoreAnyNull o JET_bitIndexIgnoreFirstNull.

  • Un indice vuoto non ignora i membri NULL, ovvero il membro grbit della struttura JET_INDEXCREATE2 ha JET_bitIndexEmpty impostato, ma non ha JET_bitIndexIgnoreAnyNull impostato.

  • Passaggio di una struttura JET_CONDITIONALCOLUMN con un membro grbit non valido.

JET_errInvalidLanguageId

È stato passato un ID impostazioni locali (LCID) non valido (tramite il membro lcid della struttura JET_UNICODEINDEX a cui punta il membro pidxunicode nella struttura JET_INDEXCREATE2 o tramite il campo lcid della struttura JET_INDEXCREATE2 ).

JET_errInvalidParameter

È stato specificato un parametro non valido. Di seguito sono riportati alcuni possibili motivi:

  • Il membro rgcolumncreate della struttura JET_TABLECREATE3 è NULL.

  • Il membro cbStruct di una delle strutture JET_COLUMNCREATE specificate nel membro rgcolumncreate della struttura JET_TABLECREATE2 non è stato impostato su sizeof( JET_COLUMNCREATE ).

  • Il membro cbKey di una struttura JET_INDEXCREATE2 è impostato su zero.

  • Il membro cbStruct di una struttura di JET_INDEXCREATE2 non è impostato su sizeof( JET_INDEXCREATE2 ).

JET_errRecordTooBig

Il record è troppo grande. La somma del membro cbMax della struttura JET_COLUMNCREATE per tutte le colonne fisse non deve superare un determinato valore.

JET_errTableDuplicate

La tabella esiste già.

JET_errTooManyColumns

È stato effettuato un tentativo di aggiungere troppe colonne alla tabella. Una tabella non può contenere più di JET_ccolFixedMost colonne fisse, non più di JET_ccolVarMost colonne a lunghezza variabile e non più di JET_ccolTaggedMost colonne con tag.

JET_errUnicodeTranslationFail

Si è verificato un errore durante il tentativo di normalizzare una colonna Unicode. Ciò può essere causato dall'esaurimento delle risorse di sistema.

JET_errSpaceHintsInvalid

Un elemento della struttura degli hint di spazio JET non è corretto o utilizzabile.

Commenti

Il nome JetCreateTableColumnIndex3 deriva dall'ordine di creazione degli oggetti: crea prima una tabella, colonne e infine indici. JetCreateTableColumnIndex3 crea una tabella con un set iniziale di colonne e indici. È possibile aggiungere e rimuovere colonne e indici aggiuntivi in modo dinamico con JetAddColumn, JetDeleteColumn, JetDeleteColumn2, JetCreateIndex, JetCreateIndex2, JetCreateIndex3 e JetDeleteIndex.

Analogamente a JetOpenTable, quando l'applicazione viene eseguita usando l'id tabella restituito, in genere deve essere chiusa con JetCloseTable.

Requisiti

Requisito Valore

Client

Richiede Windows Vista o Windows XP.

Server

Richiede Windows Server 2008 o Windows Server 2003.

Intestazione

Dichiarato in Esent.h.

Libreria

Usare ESENT.lib.

DLL

Richiede ESENT.dll.

Unicode

Implementato come JetCreateTableColumnIndex3W (Unicode) e JetCreateTableColumnIndex3A (ANSI).

Vedere anche

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