Delete コマンドを指定したグループに関連付けられているベーステーブルのレコードを削除します。
Delete
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
2) 次の例では、パラメーターで受け取る特定の発注書が削除されます。
プロシージャーのルール: Parm(&PurchaseOrderId);
プロシージャーのソース: For each PurchaseOrder //ベーストランザクションは PurchaseOrder であるため、PurchaseOrder テーブルで削除が実行される
where PurchaseOrderId=&PurchaseOrderId
For each PurchaseOrderDetail //ベーストランザクションは PurchaseOrderDetail であるため、PurchaseOrder テーブルで削除が実行される
Delete
Endfor
Delete
EndFor
データベースの更新手順