Partager via


Fonction JetCreateTableColumnIndex4W

S’applique à : Windows | Windows Server

La fonction JetCreateTableColumnIndex4W crée une table dans une base de données ESE(Extensible Storage Engine) avec un ensemble initial d’index et un ensemble initial de colonnes à partir d’un tableau de structures JET_TABLECREATE3 . La structure JET_TABLECREATE3 permet de spécifier une fonction de rappel.

La fonction JetCreateTableColumnIndex4W a été introduite dans le système d’exploitation Windows 8.

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

Paramètres

sesid

Contexte de session de base de données à utiliser pour l’appel d’API.

dbid

Identificateur de base de données à utiliser pour l’appel d’API.

ptablecreate

Pointeur vers une structure JET_TABLECREATE3 qui définit la table à créer. Pour plus d’informations, consultez JET_TABLECREATE3 .

Valeur retournée

Cette fonction retourne le type de données JET_ERR avec l’un des codes de retour répertoriés dans le tableau suivant. Pour plus d’informations sur les erreurs possibles de l’engin de stockage extensible (ESE), consultez Erreurs du moteur de stockage extensible et paramètres de gestion des erreurs.

Code de retour

Description

JET_errSuccess

L’opération s’est terminée avec succès.

JET_errCallbackNotResolved

La fonction de rappel n’a pas pu être résolue. La DLL n’a peut-être pas été trouvée ou la fonction dans la DLL n’a peut-être pas été trouvée. Avec une journalisation suffisante activée, le journal des événements fournit plus de détails.

JET_errCannotIndex

Une tentative d’indexation a été effectuée via une colonne de mise à jour de l’entiercement ou SLV (notez que les colonnes SLV sont dépréciées).

JET_errCannotNestDDL

Retourné si le paramètre ptablecreate-grbit> spécifie la valeur JET_bitTableCreateTemplateTable, mais que le paramètre ptablecreate-szTemplateTableName> a la valeur Null.

JET_errColumnDuplicate

Une colonne existe déjà.

JET_errColumnNotFound

Une tentative d’indexation a été effectuée sur une colonne inexistante. Une tentative d’indexation conditionnelle sur une colonne inexistante peut également produire cette erreur.

JET_errColumnRedundant

Une tentative d’ajout d’une colonne redondante a été effectuée. Il ne doit pas exister plus d’une colonne d’increment automatique et pas plus d’une colonne de version par table.

JET_errDensityInvalid

Cette erreur est retournée si le membre ulDensity de la structure JET_INDEXCREATE2 est défini sur un nombre inférieur à 20 ou supérieur à 100.

JET_errDDLNotInheritable

Signifie que la table nommée dans le membre szTemplateTableName de la structure JET_TABLECREATE3 n’a pas été marquée en tant que table de modèle (autrement dit, cette table n’avait pas la valeur de paramètre JET_bitTableCreateTemplateTable définie).

JET_errIndexDuplicate

Une tentative de définition de deux index identiques a été effectuée.

JET_errIndexHasPrimary

Une tentative a été effectuée pour spécifier plusieurs index principaux pour une table. Une table doit avoir exactement un index principal. Si aucun index principal n’est spécifié, le moteur de base de données en crée un de manière transparente.

JET_errIndexInvalidDef

Une définition d’index non valide a été spécifiée. Voici quelques-unes des raisons possibles de cette erreur :

  • Un index principal est conditionnel (autrement dit, le membre grbit de la structure JET_INDEXCREATE2 a la valeur JET_bitIndexPrimary définie et le membre cConditionalColumn de la structure JET_INDEXCREATE2 est supérieur à zéro).

  • S’applique aux versions du système d’exploitation Windows Server à partir de Windows Server 2003. Tentative de création d’un index tuple avec des limites de tuple, mais sans passer le membre ptuplelimits dans la structure JET_INDEXCREATE2 (autrement dit, le membre grbit de la structure JET_INDEXCREATE2 a JET_bitIndexTupleLimits valeur définie, mais le pointeur ptuplelimits est null).

  • Passage d’une définition de clé non valide dans le membre szKey de la structure JET_INDEXCREATE2 . Pour plus d’informations sur les définitions valides, consultez JET_INDEXCREATE2.

  • Définir le membre cbVarSegMac dans JET_INDEXCREATE2 être supérieur à la valeur JET_cbPrimaryKeyMost (pour un index principal) ou supérieur à la valeur JET_cbSecondaryKeyMost (pour un index secondaire).

  • Passage d’une combinaison non valide pour un index Unicode défini par l’utilisateur (qui a le bit de valeur JET_bitIndexUnicode défini dans le membre grbit de la structure JET_INDEXCREATE2 ). Certaines causes courantes incluent le membre pidxunicode de la structure JET_INDEXCREATE2 est null ou le LCID spécifié dans la structure pidxunicode n’est pas valide.

  • Spécification d’une colonne à valeurs multiples pour un index principal.

  • Tentative d’indexer trop de colonnes conditionnelles. Le membre cConditionalColumn de la structure JET_INDEXCREATE2 ne doit pas être supérieur à JET_ccolKeyMost.

JET_errIndexTuplesInvalidLimits

S’applique aux versions de Windows à partir de Windows XP. Une structure JET_TUPLELIMITS a été spécifiée et ses limites ne sont pas prises en charge. Pour plus d’informations, consultez la section remarques de la structure JET_TUPLELIMITS .

JET_errIndexTuplesNonUniqueOnly

S’applique aux versions de Windows à partir de Windows XP. Un index tuple ne peut pas être unique (autrement dit, le membre grbit de la structure JET_INDEXCREATE2 ne doit pas avoir de valeurs JET_bitIndexPrimary et JET_bitIndexUnique définies).

JET_errIndexTuplesOneColumnOnly

S’applique aux versions de Windows à partir de Windows XP. Un index tuple ne peut se trouver que sur une seule colonne (autrement dit, si le membre grbit de la structure JET_INDEXCREATE2 a JET_bitIndexTuples valeur définie et si le membre szKey de la structure JET_INDEXCREATE2 spécifie plusieurs colonnes).

JET_errIndexTuplesSecondaryIndexOnly

S’applique aux versions de Windows à partir de Windows XP. Un index tuple ne peut pas être un index principal (autrement dit, le membre grbit de la structure JET_INDEXCREATE2 ne doit pas avoir à la fois JET_bitIndexPrimary et JET_bitIndexTuples défini).

JET_errIndexTuplesTextColumnsOnly

S’applique aux versions de Windows à partir de Windows XP. Un index tuple ne peut se trouver que sur une colonne texte ou Unicode. Une tentative d’indexer d’autres colonnes (telles que des colonnes binaires) entraîne un JET_errIndexTuplesTextColumnsOnly code de réponse.

JET_errIndexTuplesVarSegMacNotAllowed

S’applique aux versions de Windows à partir de Windows XP. Un index tuple n’autorise pas la définition du membre cbVarSegMac de la structure JET_INDEXCREATE2 .

JET_errInTransaction

Une tentative de création d’un index sans informations de version a été effectuée lors d’une transaction.

JET_errInvalidCodePage

Le membre cp de la structure JET_COLUMNCREATE n’a pas été défini sur une page de code valide. Les seules valeurs valides pour les colonnes de texte sont Anglais (1252) et Unicode (1200). La valeur 0 signifie que la valeur par défaut sera utilisée (anglais, 1252).

JET_errInvalidColumnType

Le membre coltyp de la structure JET_COLUMNCREATE n’a pas été défini sur un type de colonne valide.

JET_errInvalidCreateIndex

Voici quelques raisons pour lesquelles cette erreur peut se produire :

JET_errInvalidgrbit

Une combinaison non valide de membres grbit a été spécifiée dans la structure JET_TABLECREATE3 .

La définition de l’index n’est pas valide, car le membre grbit contient des valeurs incohérentes. Voici quelques raisons possibles :

  • Un index principal avait un bit ignore spécifié (autrement dit, JET_bitIndexPrimary valeur a été passée avec les valeurs JET_bitIndexIgnoreNull, JET_bitIndexIgnoreAnyNull ou JET_bitIndexIgnoreFirstNull).

  • Un index vide n’ignore aucun membre Null (autrement dit, le membre grbit de la structure JET_INDEXCREATE2 a la valeur JET_bitIndexEmpty définie, mais n’a pas JET_bitIndexIgnoreAnyNull valeur définie).

  • Passage d’une structure JET_CONDITIONALCOLUMN avec un membre grbit non valide.

JET_errInvalidLanguageId

Un ID de paramètres régionaux (LCID) non valide a été transmis (soit via le membre lcid de la structure JET_UNICODEINDEX vers laquelle pointe le membre pidxunicode dans la structure JET_INDEXCREATE2 , soit via le champ lcid de la structure JET_INDEXCREATE2 ).

JET_errInvalidParameter

Un paramètre non valide a été donné. Voici quelques raisons possibles :

  • Le membre rgcolumncreate de la structure JET_TABLECREATE3 est null.

  • Le membre cbStruct de l’une des structures JET_COLUMNCREATE indiquées dans le membre rgcolumncreate de la structure JET_TABLECREATE2 n’a pas été défini sur sizeof( JET_COLUMNCREATE ).

  • Le membre cbKey d’une structure JET_INDEXCREATE2 est défini sur zéro.

  • Le membre cbStruct d’une structure JET_INDEXCREATE2 n’est pas défini sur sizeof( JET_INDEXCREATE2 ).

JET_errRecordTooBig

Le disque est trop grand. La somme du membre cbMax de la structure JET_COLUMNCREATE pour toutes les colonnes fixes ne doit pas dépasser une certaine valeur.

JET_errTableDuplicate

La table existe déjà.

JET_errTooManyColumns

Une tentative d’ajout d’un trop grand nombre de colonnes à la table a été effectuée. Une table ne peut pas avoir plus de JET_ccolFixedMost colonnes fixes, pas plus de JET_ccolVarMost colonnes de longueur variable et pas plus de JET_ccolTaggedMost colonnes balisées.

JET_errUnicodeTranslationFail

Une erreur s’est produite lorsqu’une tentative de normalisation d’une colonne Unicode a été effectuée. Cela peut être dû à l’épuisement des ressources système.

JET_errSpaceHintsInvalid

Un élément de la structure des indicateurs d’espace JET n’était pas correct ou ne peut pas être actionnable.

Notes

La fonction JetCreateTableColumnIndex4W crée une table avec un ensemble initial de colonnes et d’index. Des colonnes et des index supplémentaires peuvent être ajoutés et supprimés dynamiquement au moyen des fonctions JetAddColumn, JetDeleteColumn, JetDeleteColumn2, JetCreateIndex, JetCreateIndex2, JetCreateIndex3, JetCreateIndex4W et JetDeleteIndex.

Comme avec la fonction JetOpenTable , lorsque l’application utilise le tableid retourné, la fonction JetCloseTable doit fermer l’application.

Spécifications

Condition requise Valeur

Client

Nécessite Windows 8.

Serveur

Nécessite Windows Server 2012.

En-tête

Déclaré dans Esent.h.

Bibliothèque

Utilisez ESENT.lib.

DLL

Nécessite ESENT.dll.

Voir aussi

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