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, Edito 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, AddNewle operazioni , Edite 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