并发类型

为了解决游标中并发减少的问题,ODBC 公开了四种不同类型的游标并发:

  • 只读 游标可以读取数据,但无法更新或删除数据。 这是默认的并发类型。 尽管 DBMS 可能会锁定行以强制实施可重复读取和可序列化隔离级别,但它可以使用读取锁而非写入锁。 这会导致更高的并发,因为其他事务至少可以读取数据。

  • 锁定 游标使用必要的最低级别锁定来确保它可以更新或删除结果集中的行。 这通常会导致并发级别非常低,尤其是在可重复读取和可序列化事务隔离级别。

  • 使用行版本的乐观并发和使用值的乐观并发 游标使用乐观并发:仅当行自上次读取以来没有更改时,它才会更新或删除行。 为了检测更改,它会比较行版本或值。 不能保证游标能够更新或删除行,但并发性远高于使用锁定时。 有关详细信息,请参阅下面一节乐观并发

应用程序通过 SQL_ATTR_CONCURRENCY 语句属性来指定它希望游标使用的并发类型。 为了确定支持的类型,它使用 SQL_SCROLL_CONCURRENCY 选项来调用 SQLGetInfo