Partager via


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