IRowsetUpdate : IRowsetChange

IRowsetUpdate enables consumers to delay the transmission of changes made with IRowsetChange to the data source. This interface also enables consumers to undo changes before transmission.

IRowsetUpdate is optional.

When to Implement

Rowsets that want to allow delayed transmission of changes and to support undo capabilities implement IRowsetUpdate. Generally, this requires the rowset to locally cache a copy of each row as it is changed with IRowsetChange::SetData.

If IRowsetUpdate is not requested as a property of the rowset, it must not be exposed by the rowset.

When to Call

If IRowsetUpdate is exposed on the rowset, then changes made through IRowsetChange are buffered in the rowset and not transmitted to the data source until IRowsetUpdate::Update is called; this is known as delayed update mode. If IRowsetUpdate is not exposed on the rowset, then changes made through IRowsetChange are immediately transmitted to the data source; this is known as immediate update mode. For more information, see "Changing Data" in Chapter 5.

The consumer calls the methods in IRowsetChange to update, delete, and insert rows. The rowset buffers these changes. When the consumer is ready to transmit these changes to the data source, it calls Update. Before calling Update, the consumer can back out any changes with Undo.

Method Description
GetOriginalData Gets the data most recently fetched from or transmitted to the data source; does not get values based on pending changes.
GetPendingRows Returns a list of rows with pending changes.
GetRowStatus Returns the status of rows.
Undo Undoes any changes made to a row since it was last fetched or since Update was called for it.
Update Transmits any changes made to a row since it was last fetched or since Update was called for it.