Fonction JetUpdate
S’applique à : Windows | Windows Server
Fonction JetUpdate
La fonction JetUpdate 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. La suppression d’une ligne de table s’effectue en appelant JetDelete.
JetUpdate 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, JetUpdate est appelé pour terminer l’opération de mise à jour. Les index sont mis à jour uniquement par JetUpdate ou JetUpdate2, et non pendant JetSetColumn ou JetSetColumns.
JET_ERR JET_API JetUpdate(
__in JET_SESID sesid,
__in JET_TABLEID tableid,
__out_opt void* pvBookmark,
__in unsigned long cbBookmark,
__out_opt unsigned long* pcbActual
);
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 par pvBookmark.
pcbActual
Taille retournée du signet pour la ligne insérée retournée dans pvBookmark.
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ée à la session ont cessé à la suite d’un appel à JetStopService. |
JET_errColumnIllegalNull |
Identique à JET_errNullInvalid. |
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 Go, 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 nécessite 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 prep 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 de l’enregistrement à insérer ou dans l’état mis à jour d’un enregistrement en cours de remplacement 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 en cours de remplacement enfreint 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_errTransReadOnly |
Il est illégal de tenter une mise à jour à l’intérieur de l’étendue d’une transaction en lecture seule. Une transaction en lecture seule est une transaction qui a été démarrée à l’aide d’un appel à JetBeginTransaction2 avec JET_bitTransactionReadOnly. Windows XP : Cette erreur sera retournée uniquement par Windows XP et les versions ultérieures. |
JET_errUpdateNotPrepared |
JetPrepareUpdate a été appelé avec JET_prepCancel, mais le curseur n’était pas dans l’état préparé. |
JET_errVersionStoreOutOfMemory |
L’opération a échoué, car la mémoire est insuffisante pour conserver les informations transactionnelles sur la mise à jour. |
JET_errWriteConflict |
Une autre session a précédemment verrouillé l’enregistrement pour la mise à jour. La mise à jour tentée par cette session échoue. |
En cas de réussite, l’opération d’ouverture de mise à jour 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 insertion et avant remplacement, les fonctions de rappel ont peut-être été appelées, mais après l’insertion et après les rappels de remplacement 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 fonctions de rappel peuvent être inscrites pour être appelées avant ou après insertion, et avant ou après la mise à jour.
Les limitations de taille d’enregistrement sont appliquées par JetSetColumn, et non en général par JetUpdate.
Il est important de comprendre l’impact de l’exécution d’un grand nombre d’opérations de mise à jour à l’intérieur d’une seule transaction. Chaque mise à jour de la base de données doit être suivie par le moteur de base de données dans le magasin de versions. Le magasin de versions contient un enregistrement dynamique de toutes les différentes versions de chaque enregistrement ou entrée d’index dans la base de données, qui peut être vu par toutes les transactions actives. Ces versions sont utilisées pour prendre en charge le contrôle d’accès concurrentiel multi-version utilisé par le moteur de base de données pour prendre en charge les transactions utilisant l’isolation instantané. Une fois que le moteur de base de données a épuisé les ressources utilisées pour stocker ces versions, il ne peut plus accepter d’autres modifications tant que certaines transactions ne sont pas terminées pour permettre la récupération de ces ressources. Lorsque le moteur est dans cet état, toutes les mises à jour échouent avec JET_errVersionStoreOutOfMemory. Les ressources disponibles pour le moteur de base de données pour stocker ces versions peuvent être contrôlées à l’aide de JetSetSystemParameter avec JET_paramMaxVerPages et JET_paramGlobalMinVerPages.
Spécifications
Condition requise | Valeur |
---|---|
Client |
Nécessite Windows Vista, Windows XP ou Windows 2000 Professionnel. |
Serveur |
Nécessite Windows Server 2008, Windows Server 2003 ou Windows 2000 Server. |
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
JetSetSystemParameter
Paramètres système