Funzione JetUpdate2
Si applica a: Windows | Windows Server
Funzione JetUpdate2
La funzione JetUpdate2 esegue un'operazione di aggiornamento, inclusa l'inserimento di una nuova riga in una tabella o l'aggiornamento di una riga esistente. Questa funzione contiene un elenco di opzioni grbit che possono essere impostate durante l'esecuzione di un aggiornamento. L'eliminazione di una riga di tabella viene eseguita chiamando JetDelete.
Windows Server 2003: JetUpdate2 viene introdotto in Windows Server 2003.
JetUpdate2 è il passaggio finale per eseguire un inserimento o un aggiornamento. L'aggiornamento viene avviato chiamando JetPrepareUpdate e quindi chiamando JetSetColumn o JetSetColumns una o più volte per impostare lo stato del record. Infine, JetUpdate2 viene chiamato per completare l'operazione di aggiornamento. Gli indici vengono aggiornati solo da JetUpdate o JetUpdate2 e non durante JetSetColumn o 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
);
Parametri
sesid
Sessione da usare per questa chiamata.
tableid
Cursore da usare per questa chiamata.
pvBookmark
Puntatore a un segnalibro restituito per una riga inserita.
cbBookmark
Dimensioni del buffer a cui fa riferimento pvBookmark.
pcbActual
Dimensione restituita del segnalibro per la riga inserita restituita in pvBookmark.
grbit
Un gruppo di bit che contengono le opzioni da usare per questa chiamata, che includono zero o più dei seguenti.
Valore |
Significato |
---|---|
JET_bitUpdateCheckESE97Compatibility |
Questo flag causa la restituzione di un errore se l'aggiornamento non sarebbe stato possibile nella versione di Windows 2000 di ESE, che ha applicato un numero massimo minimo di istanze di colonna multivalore in ogni record rispetto alle versioni successive di ESE. Questo è importante solo per le applicazioni che desiderano replicare i dati tra applicazioni ospitate in Windows 2000 e applicazioni ospitate in Windows Server 2003 o versioni successive di ESE. Non deve essere necessario per la maggior parte delle applicazioni. |
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_errBufferTooSmall |
Il buffer specificato per il segnalibro di record non è abbastanza grande per archiviare il segnalibro del record. |
JET_errClientRequestToStopJetService |
Non è possibile completare l'operazione perché tutte le attività nell'istanza associata alla sessione non sono state interrotte in seguito a una chiamata a JetStopService. |
JET_errDiskFull |
L'operazione di aggiornamento richiede la crescita del file di database o l'allocazione del file di log, ma l'unità disco in cui risiede il file di database o la serie di log è completa. In alternativa, il file di database si trova in un volume formattato FAT32 e il file di database è già 4GBytes, il limite per file per FAT32. |
JET_errInstanceUnavailable |
Non è possibile completare l'operazione perché l'istanza associata alla sessione ha rilevato un errore irreversibile che richiede che l'accesso a tutti i dati venga revocato per proteggere l'integrità dei dati. Windows XP: Questo errore verrà restituito solo da Windows XP e versioni successive. |
JET_errInvalidParameter |
Il parametro di prep specificato nella funzione JetPrepareUpdate non è un flag valido. |
JET_errKeyDuplicate |
Una chiave di indice per questo record è un duplicato di un'altra chiave di indice per un altro record già nella tabella e l'indice non consente duplicati. |
JET_errKeyTruncated |
Il record inserito o aggiornato ha uno o più indici per i quali la chiave generata ha superato le dimensioni massime consentite. Di conseguenza, l'operazione non è riuscita a impedire il troncamento della chiave. |
JET_errMultiValuedIndexViolation |
Il record inserito o aggiornato ha una colonna multivalore indicizzata con due o più valori identici all'interno delle dimensioni massime della chiave di lunghezza impostate per l'indice. Di conseguenza, il record ha due voci identiche nell'indice che non è valido. |
JET_errNotInitialized |
Non è possibile completare l'operazione perché l'istanza associata alla sessione non è ancora stata inizializzata. |
JET_errNullInvalid |
Una o più colonne nel record da inserire o nello stato aggiornato di un record sostituito è NULL che viola il vincolo definito per tali colonne. |
JET_errNullKeyDisallowed |
Uno o più indici non sono definiti per consentire una chiave NULL e lo stato inserito o aggiornato di un record sostituito viola questo vincolo definito. |
JET_errRecordPrimaryChanged |
Un'operazione di sostituzione dei record ha aggiornato la chiave primaria. Aggiornamenti alle colonne chiave primaria devono essere eseguite tramite l'eliminazione del record esistente e l'inserimento di un nuovo record con i dati desiderati. |
JET_errRestoreInProgress |
Non è possibile completare l'operazione perché un'operazione di ripristino è in corso nell'istanza associata alla sessione. |
JET_errSessionSharingViolation |
La stessa sessione non può essere usata contemporaneamente per più thread. Windows XP: Questo errore verrà restituito solo da Windows XP e versioni successive. |
JET_errTermInProgress |
Non è possibile completare l'operazione perché l'istanza associata alla sessione viene arrestata. |
JET_errUpdateNotPrepared |
JetPrepareUpdate è stato chiamato con JET_prepCancel, ma il cursore non era nello stato preparato. |
JET_errWriteConflict |
Un'operazione di sostituzione dei record per cui un blocco di scrittura non è già allocato può riscontrare un conflitto di scrittura al momento dell'aggiornamento. |
In caso di esito positivo, l'operazione di aggiornamento aperta sul cursore viene completata. Se per la tabella viene definita una colonna di incremento automatico, questo valore viene impostato per i record inseriti. Se per la tabella viene definita una colonna di versione, il relativo valore viene inizializzato per i record appena inseriti o incrementato ogni volta che viene sostituito un record. Tutti gli indici, inclusi gli indici cluster e non cluster, vengono aggiornati.
In caso di errore, non vengono apportate modifiche di qualsiasi tipo al database. Prima di inserire e prima di sostituire le funzioni di callback potrebbe essere stato chiamato, ma dopo l'inserimento e dopo la sostituzione dei callback non sarà stato chiamato, poiché quest'ultimo non può causare un errore di aggiornamento. Il buffer di copia del cursore viene lasciato nello stato preparato, in modo che l'opportunità esista per correggere in modo incrementale i problemi che hanno causato errori e riprovare l'operazione di aggiornamento.
Commenti
Le limitazioni delle dimensioni dei record vengono applicate da JetSetColumn e non in generale da JetUpdate. L'unica eccezione è quando viene usato il flag di compatibilità JET_bitUpdateCheckESE97Compatibility. In questo caso, l'intero record viene controllato poiché un'operazione JetSetColumn singola che ha superato il limite può essere compensata da una chiamata successiva a JetSetColumn.
Per altre informazioni, vedere la sezione Osservazioni in JetUpdate .
Requisiti
Requisito | Valore |
---|---|
Client |
Richiede Windows Vista. |
Server |
Richiede Windows Server 2008 o Windows Server 2003. |
Intestazione |
Dichiarato in Esent.h. |
Libreria |
Usare ESENT.lib. |
DLL |
Richiede ESENT.dll. |
Vedere anche
JET_ERR
JET_SESID
JET_TABLEID
JetDelete
JetPrepareUpdate
JetRegisterCallback
JetRetrieveColumn
JetRetrieveColumns
JetSetColumn
JetSetColumns