ヘッダーをスキップ
Oracle Databaseルール・マネージャおよび式フィルタ開発者ガイド
11gリリース1(11.1)
E05697-01
  目次
目次
索引
索引

戻る
戻る
次へ
次へ
 

C 内部オブジェクト

式フィルタ機能およびルール・マネージャ機能では、スキーマ・オブジェクトを使用してユーザー表のExpression列がメンテナンスされます。これらのオブジェクトのほとんどは、Expression列を持つ表のスキーマに作成されます。また、これらのオブジェクトは、EXF$接頭辞付き(式フィルタ)またはRLM$接頭辞付き(ルール・マネージャ)で作成され、式フィルタAPIまたはルール・マネージャAPIを使用してメンテナンスされます。この種のオブジェクトは変更しないでください。

C.1 属性セットまたはイベント構造オブジェクト型

式フィルタでは、属性セットの概念が同じ名前のオブジェクト型を介して維持され、ルール・マネージャでは、イベント構造の概念が同じ名前のオブジェクト型を介して維持されます。属性セットまたはイベント構造に使用されるオブジェクト型にユーザー・メソッドを含めることはできず、展開型(SQLのALTER TYPEコマンドを使用)にはできません。属性セットまたはイベント構造が既存のオブジェクト型から作成されていない場合、式フィルタまたはルール・マネージャでは同じ名前のオブジェクト型が作成され、属性セットまたはイベント構造の存続期間を通じてメンテナンスされます。また、データ項目の管理、動的な式の評価および式の型チェックのために、オブジェクト型用の関数も生成されます。

式フィルタおよびルール・マネージャでは、このオブジェクト型に加えて、オブジェクト型のNESTED TABLE型が同じスキーマに作成されます。このNESTED TABLE型では、ネームスペースEXF$NTT_n が使用され、式の妥当性チェックに内部的に使用されます。

属性セットまたはイベント構造用に作成されたオブジェクト型を使用すると、対応するデータ項目を格納する表を作成できます。この種の表にそのオブジェクト型の列を含める方法と、オブジェクト型から表自体を作成する方法があります。この種の表は式を格納する表と結合できます。次に、第11章での適用例を使用した例を示します。

-- a table of type --
CREATE TABLE CarInventory OF Car4Sale;

INSERT INTO CarInventory VALUES ('Mustang',2000, 18000, 22000);
INSERT INTO CarInventory VALUES ('Mustang',2000, 18000, 22000);
INSERT INTO CarInventory VALUES ('Taurus',1997, 14000, 24500);

SELECT * FROM Consumer, CarInventory Car WHERE
   EVALUATE (Consumer.Interest, Car.getVarchar()) = 1;

-- table with the object type column --
CREATE TABLE CarStock (CarId NUMBER, Details Car4Sale);

INSERT INTO CarStock VALUES (1, Car4Sale('Mustang',2000, 18000, 22000));
INSERT INTO CarStock VALUES (2, Car4Sale('Mustang',2000, 18000, 22000));
INSERT INTO CarStock VALUES (3, Car4Sale('Taurus',1997, 14000, 24500));

SELECT * FROM Consumer, CarStock Car WHERE
  EVALUATE (Consumer.Interest, Car.Details.getVarchar()) = 1;


注意:

属性セットまたはイベント構造のメンテナンスに使用するオブジェクト型の変更には、SQLのALTER TYPEまたはCREATE OR REPLACE TYPEコマンドを使用しないでください。これらのオブジェクトの変更を制限するために、システム・トリガーが使用されます。

C.2 式フィルタの内部オブジェクト

第C.2.1項第C.2.2項および第C.2.3項では、式フィルタの内部オブジェクトに関する式フィルタ固有の情報について説明します。

C.2.1 式有効化トリガー

ユーザー表のVARCHAR2列に属性セットを割り当ててExpression列を作成すると、その表にBEFORE ROWトリガーが作成されます。このトリガーは、新しい式の追加時または既存の式の変更時に式有効化ルーチンを起動するために使用されます。このトリガーは常にEXFSYSスキーマに作成され、ネームスペースEXF$VALIDATE_nが使用されます。

C.2.2 式フィルタの索引オブジェクト

列に対して定義された式フィルタ索引は、索引と同じスキーマに作成されたデータベース・オブジェクトを使用してメンテナンスされます。第12.8項を参照してください。

C.2.3 式フィルタのシステム・トリガー

式フィルタでは、システム・トリガーを使用してシステムの整合性が管理されます。これには、次のシステム・トリガーが含まれます。

  • 属性セットにより作成されたオブジェクト型のユーザーによる削除を制限します。

  • ユーザーがCASCADEオプションで削除された場合に、属性セットと関連メタデータを削除します。

  • 1つ以上のExpression列を持つ表に対するDROPおよびALTER操作を介して式フィルタ・ディクショナリをメンテナンスします。

これらのトリガーは、EXFSYSスキーマに作成されます。