Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (日本語) » SQL Anywhere サーバ - SQL リファレンス » SQL の使用 » SQL 文 » SQL 文 (A ~ D)

 

CREATE MATERIALIZED VIEW 文

この文を使用して、マテリアライズド・ビューを作成します。

構文
CREATE MATERIALIZED VIEW 
[ owner.]materialized-view-name [ ( alt-column-names, ... ) ]
[ IN dbspace-name ]
AS select-statement
[ CHECK { IMMEDIATE | MANUAL } REFRESH ]
alt-column-names :
( column-name [,...] )
パラメータ
  • alt-column-names   この句は、マテリアライズド・ビューでカラムの代替名を指定するときに使用します。代替カラム名を指定する場合、alt-column-names に含まれるカラム数が select-statement のカラム数に一致する必要があります。代替カラム名を指定しない場合、名前は select-statement の名前に設定されます。

  • IN 句    この句は、マテリアライズド・ビューを作成する DB 領域を指定するときに使用します。この句が指定されない場合、default_dbspace オプションで指定された DB 領域にマテリアライズド・ビューが作成されます。指定されている場合は、システム DB 領域が使用されます。詳細については、追加 DB 領域の使用を参照してください。

  • AS 句   この句は、マテリアライズド・ビューの移植に使用するデータを SELECT 文の形式で指定するときに使用します。マテリアライズド・ビュー定義は、ベース・テーブルのみを参照できます。ビュー、他のマテリアライズド・ビュー、またはテンポラリ・テーブルは参照できません。select-statement にはカラム名を含めるか、エイリアス名を指定します。alt-column-names を指定する場合、これらの名前が select-statement に指定されたエイリアスの代わりに使用されます。

    SELECT 文のカラム名は明示的に指定される必要があります。SELECT * の構成は使用できません。たとえば、CREATE MATERIALIZED VIEW matview AS SELECT * FROM table-name とは指定できません。また、select-statement ではオブジェクト名を完全に修飾してください。マテリアライズド・ビューの制限を参照してください。

  • CHECK 句   この句は、実際にビューを作成しないで文を検証するときに使用します。CHECK 句を指定すると、次のようになります。

    • データベース・サーバは、CREATE MATERIALIZED VIEW がこの句なしで実行された場合に行う通常の言語チェックを実行し、通常どおり生成されたエラーが返されます。

    • データベース・サーバは、実際のビューの作成を行いません。つまり、作成時に生じる恐れのある特定のエラーが生成されることはありません。たとえば、指定されたビュー名がすでに存在することを示すエラーは生成されません。このため、CHECK 句を使用すると、ビューの命名で競合することなく、ビュー定義の目的の変更をテストできます。

    • CHECK IMMEDIATE REFRESH が使用される場合、データベース・サーバは即時ビューで構文が有効であるかを検証し、エラーを返します。

    • データベースへの変更は行われず、トランザクション・ログには何も記録されません。

    • 文実行の開始時に暗黙的なコミットがあり、実行中に取得されたすべてのロックを開放するロールバックが最後に行われます。

備考

マテリアライズド・ビューを作成すると、これは手動ビューとなり、初期化されていない状態です。つまり、再表示タイプは手動であり、ビューはリフレッシュされていません (データは移植されています)。このビューを初期化するには、REFRESH MATERIALIZED VIEW 文を実行するか、sa_refresh_materialized_views システム・プロシージャを使用します。REFRESH MATERIALIZED VIEW 文sa_refresh_materialized_views システム・プロシージャを参照してください。

マテリアライズド・ビューを暗号化し、PCTFREE 設定を変更し、再表示タイプを変更し、オプティマイザによって使用を有効または無効にできます。ただし、マテリアライズド・ビューを作成してから、ALTER MATERIALIZED VIEW を使用してこれらの設定を変更します。マテリアライズド・ビュー作成時のデフォルト値は、次のとおりです。

  • NOT ENCRYPTED

  • ENABLE USE IN OPTIMIZATION

  • PCTFREE は、データベースのページ・サイズに応じて、ページ・サイズが 4 KB の場合は 200 バイト、ページ・サイズが 2 KB の場合は 100 バイトに設定されます。

  • MANUAL REFRESH

マテリアライズド・ビューを作成するには、いくつかのデータベースとサーバのオプションが有効になっている必要があります。マテリアライズド・ビューの制限を参照してください。

sa_recompile_views システム・プロシージャは、マテリアライズド・ビューに影響しません。

パーミッション

マテリアライズド・ビュー定義内のテーブルに対する RESOURCE 権限と SELECT パーミッションが必要です。別のユーザのマテリアライズド・ビューを作成するには、DBA 権限が必要です。

関連する動作

実行中に、CREATE MATERIALIZED VIEW 文は、マテリアライズド・ビューから参照されるすべてのテーブルに排他ロックをかけますが、ブロックは実行しません。参照テーブルのいずれかがロックできない場合、文は失敗し、エラーが返されます。

参照
標準と互換性
  • SQL/2003   ベンダ拡張。

次の例は、SQL Anywhere サンプル・データベースに格納されている従業員に関する機密情報を含むマテリアライズド・ビューを作成します。この後、ビューを初期化して使用するには、例に示すように REFRESH MATERIALIZED VIEW 文を実行する必要があります。

CREATE MATERIALIZED VIEW EmployeeConfid2 AS
SELECT EmployeeID, Employees.DepartmentID, 
    SocialSecurityNumber, Salary, ManagerID, 
    Departments.DepartmentName, Departments.DepartmentHeadID
FROM Employees, Departments
WHERE Employees.DepartmentID=Departments.DepartmentID;
REFRESH MATERIALIZED VIEW EmployeeConfid2;