Applying Cached Updates
Go Up to Using Cached Updates
When a dataset is in cached update mode, changes to data are not actually written to the database until your application explicitly calls methods that apply those changes. Normally an application applies updates in response to user input, such as through a button or menu item.
Applying updates is a two-phase process that should occur in the context of a transaction component to enable your application to recover gracefully from errors.
When applying updates under transaction control, the following events take place:
- A database transaction starts.
- Cached updates are written to the database (phase 1). If you provide it, an
OnUpdateRecordevent is triggered once for each record written to the database. If an error occurs when a record is applied to the database, the
OnUpdateErrorevent is triggered if you provide one.
If the database write is unsuccessful:
- Database changes are rolled back, ending the database transaction.
- Cached updates are not committed, leaving them intact in the internal cache buffer.
If the database write is successful:
- Database changes are committed, ending the database transaction.
- Cached updates are committed, clearing the internal cache buffer (phase 2).
The two-phased approach to applying cached updates allows for effective error recovery, especially when updating multiple datasets (for example, the datasets associated with a master/detail form). For more information about handling update errors that occur when applying cached updates, see Handling Cached Update Errors.
There are actually two ways to apply updates. To apply updates for a specified set of datasets associated with a database component, call the database component’s
ApplyUpdates method. To apply updates for a single dataset, call the dataset’s
Commit methods. These choices, and their strengths, are described in the following sections.
- Applying Cached Updates with a Database Component Method
- Applying Cached Updates with a Dataset Component Methods
- Applying Updates for Master/detail Tables