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: