9.9 オブジェクトに対するマテリアライズド・ビュー・サポート

マテリアライズド・ビュー・サポートは、オブジェクト型、コレクション型またはREF型の列を含むリレーショナル表に使用できます。このようなマテリアライズド・ビューは、オブジェクト・リレーショナル・マテリアライズド・ビューと呼ばれます。

オブジェクト・リレーショナル・マテリアライズト・ビューが必要とするすべてのユーザー定義型は、マスター・サイトおよびマテリアライズド・ビュー・サイトに存在する必要があります。そのようなユーザー定義型のIDおよびバージョンは両方のサイトで一致している必要があります。

内容は次のとおりです。

9.9.1 オブジェクト型、コレクション型またはREF型の列

更新可能とするには、オブジェクト列を含む表に基づくマテリアライズド・ビューでは、そのビューを定義する問合せにある列をオブジェクトとして選択する必要があります。問合せが、その列のオブジェクト型の一定の属性のみを選択する場合は、マテリアライズド・ビューは読取り専用となります。

ビュー定義問合せは、コレクション型またはREF型の列も選択できます。REFは、主キー・ベースのキーか、システム生成のキーのいずれかで、有効範囲付きまたは有効範囲なしの場合があります。有効範囲付きREFの列は、元のリモート表ではなくマテリアライズド・ビュー・サイトの別の表(たとえば、マスター表のローカル・マテリアライズド・ビューなど)に、有効範囲を付けなおすことができます。

9.9.2 オブジェクト表

オブジェクト表に基づくマテリアライズド・ビューはオブジェクト・マテリアライズド・ビューと呼ばれます。このようなマテリアライズド・ビューは、それ自体がオブジェクト表です。オブジェクト・マテリアライズド・ビューは、OF typeキーワードをCREATE MATERIALIZED VIEW文に追加することによって作成されます。次に例を示します。

CREATE MATERIALIZED VIEW customer OF cust_objtyp AS
 SELECT * FROM HR.Customer_objtab@dbs1;

通常のオブジェクト表の場合と同様、オブジェクト・マテリアライズド・ビューの各行もオブジェクト・インスタンスであるため、マテリアライズド・ビューを作成するビュー定義問合せは、マスター表からオブジェクト全体を選択する必要があります。この問合せでは、オブジェクト型属性のサブセットのみを選択することはできません。たとえば、次のようなマテリアライズド・ビューは使用できません。

CREATE MATERIALIZED VIEW customer OF cust_objtyp AS
 SELECT CustNo FROM HR.Customer_objtab@dbs1;

OF typeのキーワードを省略することによってオブジェクト表からオブジェクト・リレーショナル・マテリアライズド・ビューを作成できますが、そのようなビューは読取り専用です。オブジェクト表からは、更新可能なオブジェクト・リレーショナル・マテリアライズド・ビューを作成できません。

たとえば、次のCREATE MATERIALIZED VIEW文は、オブジェクト表の読取り専用オブジェクト・リレーショナル・マテリアライズド・ビューを作成します。ビュー定義問合せは、そのオブジェクト型のすべての列および属性を選択しますが、オブジェクトの属性として選択するわけではないため、作成されたビューはオブジェクト・リレーショナル・ビューで、読取り専用です。

CREATE MATERIALIZED VIEW customer AS
 SELECT * FROM HR.Customer_objtab@dbs1;

オブジェクト表に基づいたオブジェクト・リレーショナル・ビューとマテリアライズド・ビューのいずれの場合も、マスターのオブジェクト表の型がFINALでない場合は、マテリアライズド・ビューの定義問合せにあるFROM句に、ONLYキーワードが含まれている必要があります。次に例を示します。

CREATE MATERIALIZED VIEW customer OF cust_objtyp AS
 SELECT CustNo FROM ONLY HR.Customer_objtab@dbs1;

そうでない場合は、FROM句からONLYキーワードを省略してください。