可使用 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 程序员参考中的 SQLSetConnectAttr。
以下片段使用了快照隔离级别:
SQLAllocHandle( SQL_HANDLE_DBC, env, &dbc ); SQLSetConnectAttr( dbc, SQL_ATTR_TXN_ISOLATION, SA_SQL_TXN_SNAPSHOT, SQL_IS_UINTEGER ); |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |