[メインソース特性]や[リンク特性]の[更新レコード識別]特性は、Magic xpaが行の更新を認識する方法を定義します。選択されたオプションは他のユーザが行のフィールドのどの部分をアクセスするかを定義します。
[更新レコード識別]特性のオプションは以下の通りです。
P=位置 …… これは一番低位のレベルです。Magic xpaは、 (Oracleの Row ID のような)ユニークな IDのみを使用してデータベース上のレコードを更新します。この場合は、最後に更新されたものは成功します。複数のユーザが同じ項目を更新するような場合は問題が発生することがあります。一般的に、ID が更新されるか(Oracleではありえませんが)行が削除された場合でなければ、Magic xpaは(更新データを失ったという結果かもしれませんが)この行が更新されたかどうかを認識することはありません。
U=位置と更新項目 …… Magic xpaは、ユニークなIDと更新されたカラムを使用してデータベースのレコードを更新します。例えば、もしユーザが「在庫数」の値を更新するためにレコードをアクセスした場合、Magic xpaは、ユニークなIDと「在庫数」の値を使用してレコードをフェッチします。この方法では、他のユーザが「在庫数」の値を更新しようとした場合、そのユーザは更新データを失ったことを示すメッセージを受け取ります。しかし、あるユーザが「在庫数」の値を更新して、他のユーザが「受注数」欄の値を更新した場合にはデータ損失は発生しません。
S=位置と選択項目 …… Magic xpaは、ユニークなIDとタスク内で選択された全てのカラムを使用してデータベースのレコードを更新します。言い換えると、同じタスクで受注数の値と「受注数」の値を[セレクト]コマンドで定義されていれば、Magic xpaは、ユニークなIDと受注数と「受注数」の値を使用してレコードをフェッチします。この方法では、他のユーザがこれらの値を更新しようとした場合そのユーザは更新データを失ったことを示すメッセージを受け取ります。
例えば、「在庫数」と「受注数」を持ったレコードのあるデータベースを同時にUser-AとUser-Bが更新した場合、[更新レコード識別]特性の内容によって以下のような結果になります
設定値 |
「在庫数」の |
「受注数」の |
データの損失 |
メッセージ |
P=位置 |
User-Aと |
User-Aと |
Yes |
No |
P=位置 |
User-A |
User-B |
No |
No |
U=位置と更新項目 |
User-Aと |
User-Aと |
Yes |
Yes |
U=位置と更新項目 |
User-A |
User-B |
No |
No |
S=位置と選択項目 |
User-A |
User-B |
Yes |
Yes |
S=位置と選択項目 |
User-B |
User-A |
Yes |
Yes |