Fonction JetUpdate2
S’applique à : Windows | Windows Server
Fonction JetUpdate2
La fonction JetUpdate2 effectue une opération de mise à jour incluant l’insertion d’une nouvelle ligne dans une table ou la mise à jour d’une ligne existante. Cette fonction contient une liste d’options grbit qui peuvent être définies lors de l’exécution d’une mise à jour. La suppression d’une ligne de table est effectuée en appelant JetDelete.
Windows Server 2003 : JetUpdate2 est introduit dans Windows Server 2003.
JetUpdate2 est la dernière étape de l’exécution d’une insertion ou d’une mise à jour. La mise à jour commence en appelant JetPrepareUpdate , puis en appelant JetSetColumn ou JetSetColumns une ou plusieurs fois pour définir l’état de l’enregistrement. Enfin, JetUpdate2 est appelé pour terminer l’opération de mise à jour. Les index sont mis à jour uniquement par JetUpdate ou JetUpdate2, et pas pendant JetSetColumn ou JetSetColumns.
JET_ERR JET_API JetUpdate2(
__in JET_SESID sesid,
__in JET_TABLEID tableid,
__out_opt void* pvBookmark,
__in unsigned long cbBookmark,
__out_opt unsigned long* pcbActual,
__in const JET_GRBIT grbit
);
Paramètres
sesid
Session à utiliser pour cet appel.
tableid
Curseur à utiliser pour cet appel.
pvBookmark
Pointeur vers un signet retourné pour une ligne insérée.
cbBookmark
Taille de la mémoire tampon pointée vers pvBookmark.
pcbActual
Taille renvoyée du signet pour la ligne insérée retournée dans pvBookmark.
grbit
Groupe de bits contenant les options à utiliser pour cet appel, qui incluent zéro ou plusieurs des éléments suivants.
Valeur |
Signification |
---|---|
JET_bitUpdateCheckESE97Compatibility |
Cet indicateur entraîne le retour d’une erreur si la mise à jour n’aurait pas été possible dans la version Windows 2000 d’ESE, qui a appliqué un nombre maximal d’instances de colonne à valeurs multiples dans chaque enregistrement par rapport aux versions ultérieures d’ESE. Cela est important uniquement pour les applications qui souhaitent répliquer des données entre des applications hébergées sur Windows 2000 et des applications hébergées sur Windows Server 2003 ou des versions ultérieures d’ESE. Elle ne doit pas être nécessaire pour la plupart des applications. |
Valeur renvoyée
Cette fonction retourne le type de données JET_ERR avec l’un des codes de retour suivants. Pour plus d’informations sur les erreurs ESE possibles, 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_errBufferTooSmall |
La mémoire tampon donnée pour le signet d’enregistrement n’est pas suffisamment grande pour stocker le signet d’enregistrement. |
JET_errClientRequestToStopJetService |
Il n’est pas possible d’effectuer l’opération, car toutes les activités sur le instance associées à la session ont cessé à la suite d’un appel à JetStopService. |
JET_errDiskFull |
L’opération de mise à jour nécessite une croissance du fichier de base de données ou une allocation de fichiers journaux, mais le lecteur de disque où réside le fichier de base de données ou la série de journaux est plein. Sinon, le fichier de base de données se trouve sur un volume au format FAT32 et le fichier de base de données est déjà de 4 GoBytes, la limite par fichier pour FAT32. |
JET_errInstanceUnavailable |
Il n’est pas possible d’effectuer l’opération, car le instance associé à la session a rencontré une erreur irrécupérable qui exige que l’accès à toutes les données soit révoqué pour protéger l’intégrité de ces données. Windows XP : Cette erreur sera retournée uniquement par Windows XP et les versions ultérieures. |
JET_errInvalidParameter |
Le paramètre de préparation donné dans la fonction JetPrepareUpdate n’est pas un indicateur valide. |
JET_errKeyDuplicate |
Une clé d’index pour cet enregistrement est un doublon d’une autre clé d’index pour un autre enregistrement déjà dans la table et l’index n’autorise pas les doublons. |
JET_errKeyTruncated |
L’enregistrement inséré ou mis à jour a un ou plusieurs index pour lesquels la clé générée aurait dépassé la taille maximale autorisée. Par conséquent, l’opération n’a pas pu empêcher la troncation de clé. |
JET_errMultiValuedIndexViolation |
L’enregistrement inséré ou mis à jour a une colonne à valeurs multiples indexée avec au moins deux valeurs identiques dans la taille de clé de longueur maximale définie pour l’index. Par conséquent, l’enregistrement a deux entrées identiques dans l’index, ce qui n’est pas valide. |
JET_errNotInitialized |
Il n’est pas possible d’effectuer l’opération, car le instance associé à la session n’a pas encore été initialisé. |
JET_errNullInvalid |
Une ou plusieurs colonnes dans l’enregistrement à insérer ou dans l’état mis à jour d’un enregistrement à remplacer est NULL , ce qui enfreint la contrainte définie pour ces colonnes. |
JET_errNullKeyDisallowed |
Un ou plusieurs index sont définis pour ne pas autoriser une clé NULL et l’état inséré ou mis à jour d’un enregistrement est remplacé ne respecte pas cette contrainte définie. |
JET_errRecordPrimaryChanged |
Une opération de remplacement d’enregistrement a mis à jour la clé primaire. Mises à jour aux colonnes de clé primaire doit être effectuée en supprimant l’enregistrement existant et en insérant un nouvel enregistrement avec les données souhaitées. |
JET_errRestoreInProgress |
Il n’est pas possible d’effectuer l’opération, car une opération de restauration est en cours sur le instance associé à la session. |
JET_errSessionSharingViolation |
La même session ne peut pas être utilisée pour plusieurs threads en même temps. Windows XP : Cette erreur sera retournée uniquement par Windows XP et les versions ultérieures. |
JET_errTermInProgress |
Il n’est pas possible d’effectuer l’opération, car le instance associé à la session est en cours d’arrêt. |
JET_errUpdateNotPrepared |
JetPrepareUpdate a été appelé avec JET_prepCancel, mais le curseur n’était pas à l’état préparé. |
JET_errWriteConflict |
Une opération de remplacement d’enregistrement pour laquelle un verrou d’écriture n’a pas déjà été alloué peut rencontrer un conflit d’écriture au moment de la mise à jour. |
En cas de réussite, l’opération de mise à jour ouverte sur le curseur est terminée. Si une colonne d’incrémentation automatique est définie pour la table, cette valeur est définie pour les enregistrements insérés. Si une colonne de version est définie pour la table, sa valeur est initialisée pour les enregistrements nouvellement insérés ou incrémentée chaque fois qu’un enregistrement est remplacé. Tous les index, y compris les index cluster et non cluster, sont mis à jour.
En cas d’échec, aucune modification de quelque nature que ce soit n’est apportée à la base de données. Avant l’insertion et avant le remplacement des fonctions de rappel peuvent avoir été appelées, mais après l’insertion et après le remplacement des rappels n’auront pas été appelés, car ce dernier ne peut pas provoquer l’échec d’une mise à jour. La mémoire tampon de copie du curseur est laissée dans son état préparé, de sorte que la possibilité existe de corriger de manière incrémentielle les problèmes qui ont provoqué des erreurs et de réessayer l’opération de mise à jour.
Notes
Les limitations de taille d’enregistrement sont appliquées par JetSetColumn, et non en général par JetUpdate. La seule exception est lorsque l’indicateur de compatibilité JET_bitUpdateCheckESE97Compatibility est utilisé. Dans ce cas, l’enregistrement entier est vérifié, car une opération JetSetColumn individuelle qui a dépassé la limite peut être compensée par un appel ultérieur à JetSetColumn.
Pour plus d’informations, consultez la section Remarques dans JetUpdate .
Spécifications
Condition requise | Valeur |
---|---|
Client |
Nécessite Windows Vista. |
Serveur |
Nécessite Windows Server 2008 ou Windows Server 2003. |
En-tête |
Déclaré dans Esent.h. |
Bibliothèque |
Utilisez ESENT.lib. |
DLL |
Nécessite ESENT.dll. |
Voir aussi
JET_ERR
JET_SESID
JET_TABLEID
JetDelete
JetPrepareUpdate
JetRegisterCallback
JetRetrieveColumn
JetRetrieveColumns
JetSetColumn
JetSetColumns