Page History
7.35.1 DELETE のパラメータ
|
|---|
「I/Oコマンドでのファイル名の指定」を参照してください。「I/Oコマンドでのファイル名の指定」を参照してください。
|
|---|
「条件および式の指定」および「I/OコマンドでのWHEREパラメータの指定」を参照してください。「条件および式の指定」および「I/OコマンドでのWHEREパラメータの指定」を参照してください。
|
|---|
「I「I/Oコマンドでのファイル・キー・リストの指定」Oコマンドでのファイル・キー・リストの指定」を参照してください。
このパラメータの使用による自動「相互更新」検査への影響の詳細については、「DELETEについてのコメント/警告」を参照してください。
...
戻りコードを受け取るフィールドとしてユーザー・フィールドを指定する場合、このフィールドは、長さ2文字の英数字フィールドである必要があります。ユーザー・フィールドを指定した場合も、特別なフィールド#IO$STSは更新されます。
値については、「RDML 値については、「RDML I/O戻りコード」を参照してください。O戻りコード」を参照してください。
|
|---|
...
| Info |
|---|
*LASTDISは、「直前の表示画面」がない場合(バッチ・ファンクション内など)でも有効です。この場合、ファンクションが異常終了し、該当するエラー・メッセージが発行されます。 *LASTDISを使用する場合、「直前の表示画面」は、データベース・コマンド(INSERT、UPDATE、DELETE、FETCH、およびSELECT)と同じレベルでなければなりません。データベース・コマンドがSUBROUTINE内で指定され、「直前の表示画面」が呼び出し元ルーチンまたはメインラインの場合など、レベルが異なるとこのファンクションは異常終了し、該当するエラー・メッセージが発行されます。 これは、Visual LANSAでイベント・ルーチンとメソッド・ルーチンを使用する場合には当てはまりません。これらの場合、制御は呼び出しルーチンに戻されます。フィールドには、エラーがあることと、フォームの親階層で見つかった最初のステータス・パーに返されたメッセージが表示されます。または、メッセージがない場合は、実行スタック内で見つかったステータス・バーを持つ最初のフォーム(PRIM_OBJTから継承した再利用可能パーツなど)が表示されます。 |
|
|---|
WITH_KEYパラメータで指定されたキーと一致するキーを持つレコードがファイルで見つからなかった場合に実行する処理を指定します。
...
このパラメータで指定するフィールドは、数値タイプで、このファンクションまたはLANSAデータ・ディクショナリで定義されていなければなりません。
| Infonote |
|---|
注:注意:FETCH、DELETE、またはUPDATEコマンドに対してWITH_RRNパラメータを使用すると、他の形式のデータベース・アクセスよりレコードの取得、削除、または更新を高速に行えます。 |
このコマンドで指定するファイルが論理ファイルかどうかに関係なく、実際にアクセス対象になるデータベース・ファイルは物理ファイルです。そのため、WITH_RRNパラメータを使用して論理ファイルにアクセスする場合は、論理ファイルの選択/除外基準は使用されません。
以下も参照してください。
- 「7.35.2 DELETE についてのコメント/警告」に記載されている、このパラメータの使用による自動「相互更新」検査への影響の詳細
- 『Visual LANSA 開発者ガイド』の「外部ファイルの読み込み」の「1.6.10 インポート・テーブル定義」
|
|---|
...
詳細については、『Visual LANSA 開発者ガイド』の「外部ファイルの読み込み」を参照してください。の「1.6.10 インポート・テーブル定義」を参照してください。
|
|---|
...
*YESを指定した場合、ファイルおよびデータ・ディクショナリ・レベルの検査の条件をすべて満たすことができるかどうかを確認するために、I/O操作がシミュレートされます。このオプションを使用した場合は、この検査に関与するデータベース・ファイルがいかなる形でも変更されることはありません。O操作がシミュレートされます。このオプションを使用した場合は、この検査に関与するデータベース・ファイルがいかなる形でも変更されることはありません。
|
|---|
...
IBM iでのコミット制御の関連については、『LANSA A/Dユーザーガイド』の「コミット制御を使用する」を参照してください。/ADユーザーガイド』の「コミット制御を使用する」を参照してください。
移植性に関する考慮事項 | Visual LANSAを使用している場合は、『LANSAアプリケーション設計ガイド』の「コミット制御」を参照してください。 |
削除する行の更新 ID 列と比較する更新 ID 列を含むフィールドの名前を指定します。
WITH_KEY、WITH_RRN、または WHERE が指定されている場合にのみ有効です。
このパラメータで指定されるフィールドはすべて、RDML または LANSA データ ディクショナリ内で定義され、数値である必要があります。
テーブルに LANSA 更新 ID 列が含まれる場合にのみ有効です。
RDMLX コードでのみ有効です。
警告:
...
FETCH WITH_KEY( ) または WITH_RRN( )
DISPLAY
...
DELETE (WITH_KEYなし および WITH_RRNなし)
DELETE コマンドには WITH_KEY または WITH_RRN パラメータがないため、(FETCH コマンドによって) 読み取られた最後の行を削除する必要があることを示しています。
この状況では、「交差更新ウィンドウ」は、行が FETCH された時点から DELETE された時点までの間隔にあります
| Note |
|---|
注: これには時間がかかる場合があります。 |
これは、自動「クロス更新」チェック機能の正しく有効な使用法です。 FETCH と DELETE の間に別のジョブ/ユーザーによって行が変更された場合、DELETE によって「クロス更新エラー」が生成されます (これは他のタイプの検証エラーと同様に処理する必要があります)。
- 明示的な相互更新チェック
次のコマンド フローを考えてみましょう。
インタラクション 1
FETCH RET_UPDID( ) WITH_KEY( ) or WITH_RRN( )インタラクション 2 (同じ「ジョブ」または異なる「ジョブ」)
DELETE WITH_UPDID( ) WITH_KEY( ) or WITH_RRN( )
この状況では、「交差更新ウィンドウ」は行が FETCH された時間と DELETE が行われた時間の間の間隔にありますが、この場合、同じ「ジョブ」内で発生しているわけではない可能性があります。
| Note |
|---|
注: これには時間がかかる場合があります。 |
これは、FETCH と DELETE の両方の WITH_KEY が同じ行に対して機能する限り、明示的な「クロス更新」チェック機能の正しく有効な使用法です。 その行が FETCH と DELETE の間に別のジョブ/ユーザーによって変更された場合、DELETE によって「クロス更新エラー」が生成されます (これは他の種類の検証エラーと同様に処理する必要があります)。
- 交差更新チェックなし
次のコマンド フローを考えてみましょう。
FETCH WITH_KEY( ) または WITH_RRN( )
DISPLAY
...
DELETE WITH_KEY( ) または WITH_RRN( ) (ただし、WITH_UPDID はなし)
DELETE コマンドには WITH_KEY または WITH_RRN パラメータがありますが、WITH_UPDID パラメータがないため、特定の行 (または行のグループ) を読み取って削除する必要があることを示します。
これは、自動の「交差更新」チェックを期待するためによくあるコーディングミスです。 DELETE コマンドの WITH_KEY または WITH_RRN 値は、FETCH コマンドの値と同じである必要があります。 ただし、RDML コンパイラは、FETCH コマンドの実行後に値が変更されていないことを確認できないため、DELETE を試行する前に行を (再) 読み取る必要があります。
この状況では、「交差更新ウィンドウ」は、行が DELETE コマンドによって (再) 読み取られてから、DELETE コマンドによって削除されるまでの間隔にあります。 この間隔は非常に短いため、「クロス更新」チェックは事実上無効になります。
これは、自動の「クロス更新」チェックを実質的に無効にするため、対話型シナリオでの DELETE コマンドの有効かつ正しい使用とは見なされません。
- 鍵なし
DELETE コマンドに WITH_KEY、WHERE、または WITH_RRN パラメーターが指定されていない場合、テーブルから読み取られた最後の行が削除されます。 これらは同等の操作です。
DELETE FROM_FILE(ORDHDR) WITH_KEY(#ORDNUM
機能的には以下と同等です。
FETCH FROM_FILE(ORDHDR) WITH_KEY(#ORDNUM)
DELETE FROM_FILE(ORDHDR)
および:
DELETE FROM_FILE(ORDLIN) WITH_KEY(#ORDNUM)
機能的には以下と同等です。
SELECT FROM_FILE(ORDLIN) WITH_KEY(#ORDNUM)
DELETE FROM_FILE(ORDLIN)
ENDSELECT
最後の 2 つの例では、注文のすべての注文明細が削除されることに注意してください。 これは、複数の行を削除する、または「一度に設定」を削除する例です。
...
の「コミット制御」を参照してください。 |