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」を参照してください。