ODBC 静态游标

静态游标是结果集在其中显示为静态的游标。 它通常不会在打开游标后检测对结果集的成员身份、顺序或值所做的更改。 例如,假定静态游标提取行,然后另一个应用程序将更新该行。 如果静态游标重新提取行,尽管更改由其他应用程序执行,但看到的值将保持不变。

尽管不需要,但静态游标可检测其自己的更新、删除和插入。 通过 SQLGetInfo 中的 SQL_STATIC_SENSITIVITY 选项报告特定静态游标是否可以检测这些更改。 静态游标从不检测其他更新、删除和插入。

由 SQL_ATTR_ROW_STATUS_PTR 语句属性指定的行状态数组可以包含任何行的 SQL_ROW_SUCCESS、SQL_ROW_SUCCESS_WITH_INFO 或 SQL_ROW_ERROR。 它为游标更新、删除或插入的行返回 SQL_ROW_UPDATED、SQL_ROW_DELETED 或 SQL_ROW_ADDED,假设游标可以检测到此类更改。

静态游标通常通过锁定结果集中的行或通过创建结果集的副本或快照来实现。 尽管锁定行相对容易,但它有显著减少并发的缺点。 创建副本可以提高并发性,并允许游标通过修改副本来跟踪其自己的更新、删除和插入。 但是,副本的制作成本更高,并且当数据被他人更改时,可能会偏离基础数据。