もう 1 つの重要な矛盾は「カーソル不安定性」です。この矛盾が起きると、あるトランザクションのカーソルが参照しているローを、他のトランザクションが修正できてしまいます。カーソルを使用するアプリケーションでは、カーソル安定性があれば、データベース内のデータに対する矛盾を確実に回避できます。
トランザクション A はカーソルを使用してローを読み込みます。トランザクション B が、そのローを修正し、コミットします。修正されたことに気づかず、トランザクション A がそのローを修正します。
SQL Anywhere は、独立性レベル 1 から 3 で「カーソル安定性」を提供しています。カーソル安定性により、カーソルの現在のローに含まれる情報を、他のトランザクションが修正できなくなります。カーソルのローの情報は、特定のテーブルに含まれる情報のコピーや、複数テーブルの異なるローにあるデータを組み合わせたものです。SELECT 文内でジョインまたはサブ選択を使用する場合、複数のテーブルが関係する可能性があります。
SQL プロシージャとカーソルのプログラミングについては、プロシージャ、トリガ、バッチの使用を参照してください。
カーソルは、他のアプリケーションを介して SQL Anywhere を使っているときのみに使用します。詳細については、アプリケーションでの SQL の使用を参照してください。
基本となるデータに加えた変更がカーソルを使用するアプリケーションから参照できるかどうかは、カーソルを使用するアプリケーションと関連はしていますが、別個の問題です。変更がアプリケーションから参照できるかどうかは、カーソルの sensitivity を指定して制御できます。
カーソルの sensitivity の詳細については、SQL Anywhere のカーソルを参照してください。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |