最近のアクセス:
カスケード削除

Transaction オブジェクト内で削除オプションを実行すると、削除されるレコードの 1 つ下のレベルでカスケード削除が行われます。
カスケード削除を実行すると、実行中のトランザクション構造内に含まれるテーブルレコードのみが自動的に削除されます。
現在のレベルの下位レベル自体に、下位のテーブルがある場合 (トランザクションに含まれているかどうかを問わず)、カスケード削除は無効になります。

例 1

Order 関連付けられたテーブル Delivery 関連付けられたテーブル
PurchaseOrderNumber*  
PurchaseOrderDate      
SupplierCode          
SupplierName         
      (ProductCode*   
       ProductName    
       PurchaseOrderQuantity
       PurchaseOrderPrice    
       ProductPrice)         
PurchaseOrderTotal
PurchaseOrder
PurchaseOrderLevel
PurchaseDeliveryNumber*
PurchaseOrderNumber*      
ProductCode*
PurchaseDeliveryDate
PurchaseOrderLevel
PurchaseDelivery
 
 
考えられる 3 種類の削除シナリオについて、詳細を説明します:
トランザクション Order を実行中であり、Order (注文のレコード) を 1 つ削除する場合
現在のレベルの下位レベル自体に下位のテーブルがあるため、カスケード削除は無効です。GeneXus はこのレコードの削除を試みます。下位のテーブル PurchaseOrderLevel 内に情報が含まれる場合、エラーメッセージが表示されます。        
トランザクション Order を実行中であり、Order (注文明細行) を 1 行削除する場合 
カスケード削除は、現在のトランザクションの構造に含まれるテーブルに対してのみ実行されます。そのため、上位のトランザクションに対してカスケード削除がトリガーされることや、自動削除が行われることはありません。PurchaseDelivery 内で対象の行に関する情報がない場合、通常の削除が実行されます。情報がある場合、エラーメッセージが表示されます。          
トランザクション Delivery を実行中であり、Order (注文明細行) を 1 行削除する場合
この場合、カスケード削除は有効です。したがって、対象の行に関連付けられたテーブル PurchaseDelivery のレコードは自動的に削除されます。

例 2

Aircraft 関連付けられたテーブル
AircraftId
AircraftMake
AircraftModel
AircraftRegistrationCertificate
      (AircraftMantenanceLevelDate
            (AircraftPersonId
             AircraftPersonName))
      (AircraftCertNumberChangeDate
       AircraftCertNumberChangeNewCertNumber)
Aircraft
AircraftMantenanceLevel
AircraftMantenanceLevelTechnicalPersonnelLevel
AircraftCertNumberChangesLevel
 
トランザクション Aircraft を実行中であり、Aircraft を 1 つ削除する場合
現在のレベルの下位レベル自体に、下位レベルがもう 1 つ含まれているため、カスケード削除は無効です。






サブページ
Created: 15/01/07 22:47 by Admin Last update: 21/05/21 03:29 by Admin
カテゴリ
Powered by GXwiki 3.0