Property group: Rowset


Column? N


Typical R/W: R/W

Description: Remove Deleted Rows




The provider removes rows it detects as having been deleted from the rowset. That is, fetching a block of rows that formerly included a deleted row does not return a handle to that row.


The provider deletes the rows, but does not remove them from the rowset. If the user fetches a block of rows containing a deleted row, that row will have a handle that shows up in the rowset.

Any method that retrieves a row using the handle of a deleted row will return a code of DB_E_DELETEDROW.

The manner in which deleted rows are presented to the consumer is provider-specific. Some providers will not show the deleted rows, and some will show all rows.

If the provider does not support this property, the consumer cannot assume true or false. Providers are encouraged at minimum to support a default value for this property.

Which rows the rowset detects as having been deleted is determined by the DBPROP_OWNUPDATEDELETE and DBPROP_OTHERUPDATEDELETE properties; whether the rowset removes these rows is determined by this property.

This property is independent of the transaction isolation level. While the transaction isolation level in some cases determines whether the rowset can detect a row as having been deleted, it has no effect on whether or not the rowset removes that row.

For programmers accustomed to the cursor model in ODBC, the value of this property is always VARIANT_TRUE for rowsets implemented through dynamic cursors; that is, dynamic cursors always remove deleted rows. Whether static and keyset-driven cursors remove deleted rows depends on the value of this property.