ON DELETE CASCADEキャッシュ表属性
ON DELETE CASCADE
キャッシュ表属性は、いずれのキャッシュ・グループ・タイプのキャッシュ表にも指定できます。
ON DELETE CASCADE
は、参照されるキー値を含む行が親表から削除されると、依存する外部キーを持つ子表の行も削除されるように指定します。
次の例では、子表の外部キー定義でのON DELETE CASCADE
キャッシュ表属性の使用方法を示します。
CREATE READONLY CACHE GROUP customer_orders FROM sales.customer (cust_num NUMBER(6) NOT NULL, region VARCHAR2(10), name VARCHAR2(50), address VARCHAR2(100), PRIMARY KEY(cust_num)), sales.orders (ord_num NUMBER(10) NOT NULL, cust_num NUMBER(6) NOT NULL, when_placed DATE NOT NULL, when_shipped DATE NOT NULL, PRIMARY KEY(ord_num), FOREIGN KEY(cust_num) REFERENCES sales.customer(cust_num) ON DELETE CASCADE);
親表から子表へのすべてのパスは、削除パスまたは削除不可パスのいずれかである必要があります。1つの親表から1つの子表に対し、複数の削除パスおよび複数の削除不可パスは存在できません。ON DELETE CASCADE
キャッシュ表属性は、削除パス上の子表に対して指定します。
ON DELETE CASCADE
キャッシュ表属性を使用する場合は、次の制限が適用されます。
-
AWTおよびSWTキャッシュ・グループの場合および
PROPAGATE
キャッシュ表属性を使用するユーザー管理キャッシュ・グループ内のTimesTenキャッシュ表の場合、ON DELETE CASCADE
キャッシュ表属性を使用するキャッシュ表の外部キーは、ON DELETE CASCADE
属性を使用するキャッシュされたOracle Database表の外部キーの適切なサブセットである必要があります。キャッシュされたOracle Database表に対するON DELETE CASCADE
アクションは、個々の削除としてTimesTenのキャッシュ表に適用されます。キャッシュ表に対するON DELETE CASCADE
アクションは、カスケード処理としてキャッシュされたOracle Database表に適用されます。 -
TimesTenのキャッシュ表とキャッシュされたOracle Database表間の外部キーの照合は、キャッシュ・グループの作成時にのみ実行されます。キャッシュされたOracle Database表の外部キーがキャッシュ・グループの作成後に変更された場合は、カスケード削除処理が機能しないことがあります。
『Oracle TimesTen In-Memory Database SQLリファレンス』の「CREATE CACHE GROUP」を参照してください。