Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (中文) » SQL Anywhere 服务器 - 编程 » SQL Anywhere 数据访问 API » SQL Anywhere ODBC API » 使用结果集

 

选择 ODBC 事务隔离级别

可使用 SQLSetConnectAttr 为连接设置事务隔离级别。确定 SQL Anywhere 提供的事务隔离级别的特性包括以下几种:

  • SQL_TXN_READ_UNCOMMITTED   将隔离级别设置为 0。在设置此特性值后,它会隔离任何从其他用户所做的更改读取的数据,且其他用户所做的更改将不可见。其他用户重新执行读取语句时将会受到影响。它不支持可重复的读取。这是隔离级别的缺省值。

  • SQL_TXN_READ_COMMITTED   将隔离级别设置为 1。在设置此特性值后,它不会隔离任何从其他用户所做的更改读取的数据,且其他用户所做的更改将可见。其他用户重新执行读取语句时将会受到影响。它不支持可重复的读取。

  • SQL_TXN_REPEATABLE_READ   将隔离级别设置为 2。在设置此特性值后,它会隔离任何从其他用户所做的更改读取的数据,且其他用户所做的更改将不可见。其他用户重新执行读取语句时将会受到影响。它支持可重复的读取。

  • SQL_TXN_SERIALIZABLE   将隔离级别设置为 3。在设置此特性值后,它会隔离任何从其他用户所做的更改读取的数据,且其他用户所做的更改将不可见。其他用户重新执行读取语句时将不会受到影响。它支持可重复的读取。

  • SA_SQL_TXN_SNAPSHOT   将隔离级别设置为快照。设置此特性后,它将为整个事务提供数据库的单个视图。

  • SA_SQL_TXN_STATEMENT_SNAPSHOT   将隔离级别设置为语句快照。设置此特性后,它所提供的一致性要比快照隔离差,但是在由于长时间运行事务而导致临时文件中版本存储所用的空间过大的情况下,它将非常有用。

  • SA_SQL_TXN_READONLY_STATEMENT_SNAPSHOT   将隔离级别设置为只读语句快照。设置此特性后,它所提供的一致性要比语句快照隔离差,但可避免出现更新冲突的可能性。因此,它最适用于移植那些最初打算在不同隔离级别下运行的应用程序。

有关详细信息,请参见 Microsoft ODBC 程序员参考中的 [external link] SQLSetConnectAttr

示例

以下片段使用了快照隔离级别:

SQLAllocHandle( SQL_HANDLE_DBC, env, &dbc );
SQLSetConnectAttr( dbc, SQL_ATTR_TXN_ISOLATION,
      SA_SQL_TXN_SNAPSHOT, SQL_IS_UINTEGER );