Transazione: effetti delle transazioni sugli aggiornamenti (ODBC)
Gli aggiornamenti all'origine dati vengono gestiti durante le transazioni tramite l'uso di un buffer di modifica (lo stesso metodo usato all'esterno delle transazioni). I membri dati del campo di un recordset fungono collettivamente da buffer di modifica che contiene il record corrente, di cui il recordset esegue il backup temporaneamente durante un AddNew
oggetto o Edit
. Durante un'operazione Delete
, il backup del record corrente non viene eseguito all'interno di una transazione. Per altre informazioni sul buffer di modifica e sul modo in cui gli aggiornamenti archiviano il record corrente, vedere Recordset: How Recordsets Update Records (ODBC).
Nota
Se è stato implementato il recupero di righe bulk, non è possibile chiamare AddNew
, Edit
o Delete
. È invece necessario scrivere funzioni personalizzate per eseguire gli aggiornamenti all'origine dati. Per altre informazioni sul recupero delle righe bulk, vedere Recordset: recupero di record in blocco (ODBC).
Durante le transazioni, AddNew
le operazioni , Edit
e Delete
possono essere sottoposte a commit o rollback. Gli effetti di CommitTrans
e Rollback
potrebbero causare il ripristino del record corrente nel buffer di modifica. Per assicurarsi che il record corrente venga ripristinato correttamente, è importante comprendere come funzionano le CommitTrans
funzioni membro e Rollback
di con le funzioni di CDatabase
aggiornamento di CRecordset
.
Impatto di CommitTrans sugli aggiornamenti
Nella tabella seguente vengono illustrati gli effetti delle CommitTrans
transazioni.
Impatto di CommitTrans sugli aggiornamenti
Operazione | Stato dell'origine dati |
---|---|
AddNew e Update , e poi CommitTrans |
Il nuovo record viene aggiunto all'origine dati. |
AddNew (senza Update ) e quindi CommitTrans |
Il nuovo record viene perso. Record non aggiunto all'origine dati. |
Edit e Update , e poi CommitTrans |
Modifiche di cui è stato eseguito il commit nell'origine dati. |
Edit (senza Update ) e quindi CommitTrans |
Le modifiche apportate al record vengono perse. Il record rimane invariato nell'origine dati. |
Delete allora CommitTrans |
Record eliminati dall'origine dati. |
Impatto del rollback sulle transazioni
Nella tabella seguente vengono illustrati gli effetti delle Rollback
transazioni.
Impatto del rollback sulle transazioni
Operazione | Stato del record corrente | È anche necessario | Stato dell'origine dati |
---|---|---|---|
AddNew e Update , quindi Rollback |
Il contenuto del record corrente viene archiviato temporaneamente per liberare spazio per il nuovo record. Il nuovo record viene immesso nel buffer di modifica. Dopo Update la chiamata, il record corrente viene ripristinato nel buffer di modifica. |
L'aggiunta all'origine dati eseguita da Update viene invertita. |
|
AddNew (senza Update ), quindi Rollback |
Il contenuto del record corrente viene archiviato temporaneamente per liberare spazio per il nuovo record. Il buffer di modifica contiene un nuovo record. | Chiamare AddNew di nuovo per ripristinare il buffer di modifica in un nuovo record vuoto. In alternativa, chiamare Move (0) per ripristinare i valori precedenti nel buffer di modifica. |
Poiché Update non è stato chiamato, non sono state apportate modifiche all'origine dati. |
Edit e Update , quindi Rollback |
Una versione non modificata del record corrente viene archiviata temporaneamente. Le modifiche vengono apportate al contenuto del buffer di modifica. Dopo Update la chiamata, la versione non modificata del record viene ancora archiviata temporaneamente. |
Dynaset: scorrere di nuovo il record corrente per ripristinare la versione non modificata del record nel buffer di modifica. Snapshot: chiamare Requery per aggiornare il recordset dall'origine dati. |
Le modifiche apportate all'origine dati da Update vengono invertite. |
Edit (senza Update ), quindi Rollback |
Una versione non modificata del record corrente viene archiviata temporaneamente. Le modifiche vengono apportate al contenuto del buffer di modifica. | Chiamare Edit di nuovo per ripristinare la versione non modificata del record nel buffer di modifica. |
Poiché Update non è stato chiamato, non sono state apportate modifiche all'origine dati. |
Delete allora Rollback |
Il contenuto del record corrente viene eliminato. | Chiamare Requery per ripristinare il contenuto del record corrente dall'origine dati. |
L'eliminazione dei dati dall'origine dati viene annullata. |
Vedi anche
Transazione (ODBC)
Transazione: esecuzione di una transazione in un recordset (ODBC)
Classe CDatabase
Classe CRecordset