OnDelete
使用法
関連するオブジェクトが削除されたときに、現在のテーブルで実行するアクションを指定するには、以下の構文を使用します。
Relationship relname As classname [ Cardinality = cardinality, Inverse = inverse, OnDelete = ondelete ];
ondelete は以下のいずれかの値になります。この説明では、関連するレコードはリレーションシップの相手側に属するレコードまたはオブジェクトであり、参照元レコードはリレーションシップのこちら側にあるレコードまたはオブジェクトです。
-
cascade — 関連するレコードを削除した場合、このテーブル内の参照元レコードも削除されます。
-
noaction — 関連するレコードの削除を試みた場合、失敗します。
-
setdefault — 関連するレコードを削除した場合、このテーブル内の参照元レコードはその既定値に設定されます。
-
setnull — 関連するレコードを削除した場合、このテーブル内の参照元レコードは NULL に設定されます。
詳細
このキーワードは、リレーションシップの相手側でレコードが削除されたときに発生する参照アクションを定義します。
既定値
このキーワードを省略すると、以下のようになります。
-
Parent である Cardinality とのリレーションシップの場合、OnDelete は cascade です。つまり、親レコードを削除する場合、既定では、関連する子レコードが削除されます。
-
One である Cardinality とのリレーションシップの場合、OnDelete は noaction です。つまり、“1” レコードの削除を試みた場合、既定ではそれを指すレコードが相手のテーブルにあれば失敗します。
例
Relationship Patient As DeepSee.Study.Patient [ Cardinality = parent, Inverse = DiagnosesAsChildren, OnDelete = cascade ];
関連項目
-
このドキュメントの “プロパティ定義”
-
Caché オブジェクトの使用法 の “リレーションシップの定義と使用”
-
Caché オブジェクトの使用法 の “コンパイラ・キーワードの概要”