OWA_OPT_LOCK
パッケージには、更新内容の消失を防ぐためのコミット時ロック方策を実行するサブプログラムが含まれています。
関連項目: このパッケージの実装の詳細は、次のマニュアルを参照してください。
|
この章では、次の項目について説明します。
OWA_OPT_LOCKパッケージには、更新内容の消失を防ぐためのコミット時ロック方策を実行するサブプログラムが含まれています。
これは、ユーザーが更新時に挿入した行が、同時に他のユーザーによって変更されたかどうかをチェックします。
HTTPはステートレス・プロトコルであるため、PL/SQLゲートウェイは、従来型のデータベースのロック構造を使用できません。 OWA_OPT_LOCK
パッケージには、更新内容の消失問題に対処する方法が2つあります。
隠しフィールド方式では、HTMLページの隠しフィールドに前の値を格納します。ユーザーが更新を要求すると、PL/SQLゲートウェイはこれらの値をデータベースの現在の状態と照合します。更新操作は、値が一致した場合にのみ実行されます。 この方式を使用するには、owa_opt_lock.store_valuesプロシージャをコールします。
チェックサム方式では、値そのものではなくチェックサムを格納します。 この方式を使用するには、owa_opt_lock.checksumファンクションをコールします。
これらの方式は、コミット時に実行されます。これらの方式では、他のユーザーによる更新の実行は妨げませんが、介入更新が発生した場合に現行の更新を拒否します。
このデータ型は、ROWIDを保持するためのPL/SQL表です。
TYPE VCARRAY IS TABLE OF VARCHAR2(2000) INDEX BY BINARY_INTEGER
これは、OWA_TEXT
.VC_ARR
データ型と異なるので注意してください。
表175-1 OWA_OPT_LOCKパッケージのサブプログラム
サブプログラム | 説明 |
---|---|
|
チェックサム値を戻します。 |
|
ROWID値を戻します。 |
|
後で検証するために、隠しフィールドに未修正の値を格納します。 |
|
格納された値を修正値と照合します。 |
このファンクションは、指定された文字列または表内の行についてのchecksum
値を戻します。表内の行の場合、このファンクションは、行内の列の値を基にしてchecksum
値を計算します。このファンクションには2つのバージョンがあります。
1番目のバージョンは、指定された文字列に基づいてchecksum
を戻します。これは、データベースによって実行される、純粋な32ビットchecksum
で、インターネット1プロトコルに基づいています。
2番目のバージョンは、表内の行の値に基づいてchecksum
を戻します。これは、不純な32ビットchecksumで、インターネット1プロトコルに基づいています。
構文
OWA_OPT_LOCK.CHECKSUM( p_buff IN VARCHAR2) RETURN NUMBER; OWA_OPT_LOCK.CHECKSUM( p_owner IN VARCHAR2, p_tname IN VARCHAR2, p_rowid IN ROWID) RETURN NUMBER;
パラメータ
表175-2 CHECKSUMファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
|
|
表の所有者。 |
|
表の名前。 |
|
|
このファンクションは、指定されたOWA_OPT_LOCK.VCARRAY
データ型から
ROWID
データ型を戻します。
構文
OWA_OPT_LOCK.GET_ROWID( p_old_values IN vcarray) RETURN ROWID;
パラメータ
このプロシージャは、後で更新する行の列の値を格納します。この値は、非表示HTMLフォーム要素内に格納されます。
構文
OWA_OPT_LOCK.STORE_VALUES( p_owner IN VARCHAR2, p_tname IN VARCHAR2, p_rowid IN ROWID);
パラメータ
使用上の注意
行を更新する前に、これらの値を現在の行の値と比較して、行の値が変更されていないことを確認してください。値が変更されている場合、そのユーザーに警告して、更新を実行するかどうかを判断してもらってください。
このプロシージャは、一連の非表示フォーム要素を生成します。
表の所有者に対して1つの非表示フォーム要素が作成されます。要素名は"old
_p_tname
"です。ここで、p_tname
は表の名前です。要素の値は、所有者名です。
表の名前に対して1つの非表示フォーム要素が作成されます。要素名は"old
_p_tname
"です。ここで、p_tname
は表の名前です。要素の値は、表の名前です。
行内の各列ごとに1つの要素が作成されます。要素名は"old
_p_tname
"です。ここで、p_tname
は表の名前です。要素の値は、列の値です。
「VERIFY_VALUESファンクション」も参照してください。
このファンクションは、指定された行の値が最後の問合せ以降に更新されたかどうかを検証します。 このファンクションはSTORE_VALUESプロシージャとともに使用します。
構文
OWA_OPT_LOCK.VERIFY_VALUES( p_old_values IN vcarray) RETURN BOOLEAN;
パラメータ
表175-5 VERIFY_VALUESファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
次の情報を含むPL/SQL表。
残りのインデックスには、表内の列の値が含まれます。 通常、このパラメータは、非表示フォーム要素上に行の値を格納するためにすでにSTORE_VALUESプロシージャをコール済のHTMLフォームから渡されます。 |
戻り値
他の更新が実行されていない場合はTRUE
で、実行されている場合はFALSE
になります。