Row States in Deferred Update Mode

OLE DB Programmer's Reference

A row has a state that depends on whether it has been changed and whether that change is pending or transmitted. Consumers call IRowsetUpdate::GetRowStatus to determine the state of a row. They call IRowsetUpdate::GetPendingRows to get all rows in a pending change state. The state is indicated by the DBPENDINGSTATUS enumerated type. The values in this type and their meanings are listed in the following table.

Status value Row state Description
DBPENDINGSTATUS_NEW Pending Insert The row has a pending insert.
DBPENDINGSTATUS_CHANGED Pending Update The row has a deferred change.
DBPENDINGSTATUS_DELETED Pending Delete The row has a pending delete. This state is sometimes called soft delete.
DBPENDINGSTATUS_UNCHANGED Unchanged No changes have been made to the row, or changes that were made to the row have been transmitted or undone.
DBPENDINGSTATUS_INVALIDROW Invalid The row has been deleted and that deletion has been transmitted to the data store. This status is also used when a row handle passed to IRowsetUpdate::GetRowStatus was invalid. This state is sometimes called hard delete.

The Unchanged and Invalid states are the nonpending change states. The Pending Insert, Pending Update, and Pending Delete states are the pending change states. The following illustration shows these states, how methods affect them, and the corresponding DBPENDINGSTATUS values.

Pending change states

If the consumer calls IRowset::ReleaseRows for a row and the reference count for that row falls to zero, release of the row and its resources depends on the row's state. In the nonpending change states, the row and its resources are usually released when the reference count falls to zero, although the actual point of release is provider-specific.

In the pending change states, the row and its resources are not released when the reference count falls to zero nor are the pending changes lost. The row remains valid until the changes are transmitted or undone (the row moves to a nonpending change state), and then the row and its resources are released. Rows in a pending change state that have a reference count of zero are still considered active when, for example, calculating row limits such as those returned by the DBPROP_MAXOPENROWS and DBPROP_MAXPENDINGROWS properties. Although the row handle might remain valid for such rows, consumers should not rely on this.

1998-2001 Microsoft Corporation. All rights reserved.



Microsoft Ole Db 2.0 Programmer's Reference and Data Access SDK
Microsoft OLE DB 2.0 Programmers Reference and Data Access SDK (Microsoft Professional Editions)
ISBN: 0735605904
EAN: 2147483647
Year: 1998
Pages: 1083

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net