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 的用法 » 创建数据库 » 使用事务和隔离级别 » 隔离级别和一致性

 

从支持 ODBC 的应用程序设置隔离级别

ODBC 应用程序调用 SQLSetConnectAttr,调用时将 Attribute 设置为 SQL_ATTR_TXN_ISOLATION 并根据相应隔离级别设置 ValuePtr:

ValuePtr 参数
ValuePtr 隔离级别
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 只读语句快照
通过 ODBC 更改隔离级别

您可以使用 ODBC32.dll 库中的 SQLSetConnectOption 函数通过 ODBC 更改连接的隔离级别。

SQLSetConnectOption 函数采用三个参数:ODBC 连接句柄的值、您希望设置隔离级别这一事实,以及与该隔离级别相对应的值。下表中显示了这些值。

字符串
SQL_TXN_ISOLATION 108
SQL_TXN_READ_UNCOMMITTED 1
SQL_TXN_READ_COMMITTED 2
SQL_TXN_REPEATABLE_READ 4
SQL_TXN_SERIALIZABLE 8
SA_SQL_TXN_SNAPSHOT 32
SA_SQL_TXN_STATEMENT_SNAPSHOT 64
SA_SQL_TXN_READONLY_STATEMENT_SNAPSHOT 128

请不要使用 SET OPTION 语句从 ODBC 应用程序中更改隔离级别。由于 ODBC 驱动程序不分析语句,所以,在 ODBC 中执行任何语句都不会被 ODBC 驱动程序识别。这可能会导致意外的锁定行为。

示例

以下函数调用会将连接 MyConnection 的隔离级别设置为隔离级别 2:

SQLSetConnectOption( MyConnection.hDbc, 
                     SQL_TXN_ISOLATION, 
                     SQL_TXN_REPEATABLE_READ )

ODBC 使用隔离功能支持各种数据库锁选项。例如,在 PowerBuilder 中,可以使用事务对象的 Lock 属性在连接到数据库时设置隔离级别。Lock 属性是一个字符串,按以下方式设置:

SQLCA.lock = "RU"

Lock 选项仅在 CONNECT 发生时起作用。在 CONNECT 之后再更改 Lock 属性不会对连接产生任何影响。


在事务内更改隔离级别