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 snapshot
SA_SQL_TXN_STATEMENT_SNAPSHOT statement-snapshot
SA_SQL_TXN_READONLY_STATEMENT_SNAPSHOT readonly-statement-snapshot
ODBC を介した独立性レベルの変更

ODBC を介して接続の独立性レベルを変更するには、ODBC32.dll ライブラリの SQLSetConnectOption 関数を使用します。

SQLSetConnectOption 関数は、次の 3 つのパラメータを取ります。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

ODBC アプリケーションから SET OPTION 文を使用して、独立性レベルを変更しないでください。ODBC ドライバは SET OPTION 文を解析しないため、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 属性を変更しても、接続には影響しません。


トランザクション内の独立性レベルの変更