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 に設定します。この属性値を設定すると、別のユーザによる変更から読み込まれたデータは分離され、その変更内容は表示されません。READ 文の再実行は別のユーザによって影響されます。繰り返し可能読み出しはサポートされていません。これは独立性レベルのデフォルト値です。

  • SQL_TXN_READ_COMMITTED   独立性レベルを 1 に設定します。この属性値を設定すると、別のユーザによる変更から読み込まれたデータは分離されず、その変更内容は表示されます。READ 文の再実行は別のユーザによって影響されます。繰り返し可能読み出しはサポートされていません。

  • SQL_TXN_REPEATABLE_READ   独立性レベルを 2 に設定します。この属性値を設定すると、別のユーザによる変更から読み込まれたデータは分離され、その変更内容は表示されません。READ 文の再実行は別のユーザによって影響されます。繰り返し可能読み出しはサポートされています。

  • SQL_TXN_SERIALIZABLE   独立性レベルを 3 に設定します。この属性値を設定すると、別のユーザによる変更から読み込まれたデータは分離され、その変更内容は表示されません。READ 文の再実行は別のユーザによって影響されません。繰り返し可能読み出しはサポートされています。

  • SA_SQL_TXN_SNAPSHOT   独立性レベルを snapshot に設定します。この属性値を設定すると、トランザクション全体のデータベースに関する単一ビューが表示されます。

  • SA_SQL_TXN_STATEMENT_SNAPSHOT   独立性レベルを statement-snapshot に設定します。この属性値を設定すると、スナップショット・アイソレーションよりデータの整合性は低くなりますが、トランザクションを長時間実行したためにバージョン情報を格納するテンポラリ・ファイルのサイズが大きくなりすぎる場合には有益です。

  • SA_SQL_TXN_READONLY_STATEMENT_SNAPSHOT   独立性レベルを readonly-statement-snapshot に設定します。この属性値を設定すると、文のスナップショット・アイソレーションよりデータの整合性は低くなりますが、更新の競合は回避されます。このため、この属性は元々異なる独立性レベルで実行することを想定していたアプリケーションを移植するのに最も適しています。

詳細については、Microsoft の『ODBC Programmer's Reference』の「[external link] SQLSetConnectAttr」を参照してください。

次のフラグメントは、snapshot 独立性レベルを使用します。

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