最近のアクセス:
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); 

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

参考情報

データベースの更新手順





サブページ
Created: 14/09/18 03:19 by Admin Last update: 23/01/26 23:36 by Admin
カテゴリ
Powered by GXwiki 3.0