最近のアクセス:
Delete コマンド

Delete コマンドを指定したグループに関連付けられているベーステーブルのレコードを削除します。

構文

Delete

適用範囲

オブジェクト: Procedure

説明

Delete コマンド自体を指定したグループに関連付けられているベーステーブルのレコードを削除します。

Delete コマンドは、プロシージャーで定義されている For Each コマンドでのみ使用できます。For Each コマンドで Blocking 節を指定していない限り、Delete コマンドに到達した時点で削除が行われます。Blocking 節がある場合は、ブロック全体の実行が完了したときに、一括削除するために Delete コマンドが DBMS に送られます。
注:
  • Delete コマンドを指定したときに、参照整合性は自動的にチェックされません。
    • ネストされたグループを含むグループで Delete コマンドを指定した場合は、現在のグループのデータは物理的に削除されていますが、内側のネストされたグループで使用できます。
  • そのため、内側のグループのデータを削除してから、外側のグループのデータを削除してください。そうすることで、キャンセルやロックを防ぐことができます。

次の Transaction オブジェクトがあるとします:
PurchaseOrder
{
  PurchaseOrderId*
  PurchaseOrderDate
  SupplierId
  PurchaseOrderAmount
}

PurchaseOrderDetail
{
  PurchaseOrderId*
  PurchaseOrderDetailId*
  PurchaseOrderDetailQuantity
  PurchaseOrderDetailPrice
  PurchaseOrderDetailAmount
}
1) 次の例では、発注書のヘッダーの前の発注書の明細行が削除されます。したがって、プログラムがキャンセルされた場合、ヘッダーのない発注書の明細行は残りません。
For each PurchaseOrder           //ベーストランザクションは PurchaseOrder であるため、PurchaseOrder テーブルで削除が実行される
   For each PurchaseOrderDetail  //ベーストランザクションは PurchaseOrderDetail であるため、PurchaseOrder テーブルで削除が実行される
         Delete
   Endfor
   Delete
EndFor
一括削除のスループットを向上させるには、For Each コマンドにおける Blocking 節、およびデータ更新のブロッキングの説明を参照してください。
2) 次の例では、パラメーターで受け取る特定の発注書が削除されます。
プロシージャーのルール: 
Parm(&PurchaseOrderId);

Procedure Source:
For each PurchaseOrder   //ベーストランザクションは PurchaseOrder であるため、PurchaseOrder テーブルで削除が実行される   
    where PurchaseOrderId=&PurchaseOrderId
    For each PurchaseOrderDetail //ベーストランザクションは PurchaseOrderDetail であるため、PurchaseOrder テーブルで削除が実行される
        Delete 
    Endfor 
    Delete 
EndFor 

参考情報

データベースの更新手順

動画

イメージ:20668.png Updating with procedure-specific commands. Introduction


サブページ
Created: 14/09/18 03:19 by Admin Last update: 24/11/04 20:38 by Admin
カテゴリ
Powered by GXwiki 3.0