IRowsetChange: Notes
Limitations
The ODBC Provider does not support the data type SQL_VARIANT. For more information, see Known Limitations. IRowsetChange::DeleteRows fails when attempting to delete rows containing a column of SQL_VARIANT data type.
When using a dynamic cursor, the following limitations apply:
Changing the primary key for a row after inserting or updating a row will return an error when IRowsetChange::SetData is called.
KAGPROP_POSITIONONNEWROW cannot identify the position because the row is not necessarily at the end of the result set.
Bookmarks cannot be used because they are not allowed on dynamic cursors.
Implementation Notes
IRowsetChange is implemented using the ODBC function SQLSetPos. It therefore can be exposed only when the underlying ODBC driver supports SQLSetPos. If the underlying driver does not support SQLSetPos, query-based updating will be used based on an optimistic, by-value scheme.
Newly inserted rows can be updated or deleted only through query-based updates; if query-based updating is unavailable, newly inserted rows cannot be updated. This is not the case for ODBC 3.x drivers, which return bookmarks for newly inserted rows and allow updates.
You need to have an index on the table or else IRowsetChange::Insert Row will fail with any ISLONG column, returning an E_FAIL HRESULT.
This topic is a part of: