Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.
マテリアライズドビューを作成します。
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 領域が使用されます。
AS 句 この句は、マテリアライズドビューの移植に使用するデータを SELECT 文の形式で指定するときに使用します。マテリアライズドビュー定義は、ベーステーブルのみを参照できます。ビュー、他のマテリアライズドビュー、またはテンポラリテーブルは参照できません。select-statement にはカラム名を含めるか、エイリアス名を指定します。alt-column-names を指定する場合、これらの名前が select-statement に指定されたエイリアスの代わりに使用されます。
SELECT 文のカラム名は明示的に指定される必要があります。SELECT * の構成は使用できません。たとえば、CREATE MATERIALIZED VIEW matview AS SELECT * FROM table-name とは指定できません。また、select-statement ではオブジェクト名を完全に修飾してください。
SELECT *
CREATE MATERIALIZED VIEW matview AS SELECT * FROM table-name
CHECK 句 この句は、実際にビューを作成しないで文を検証するときに使用します。CHECK 句を指定すると、次のようになります。
データベースサーバは、CREATE MATERIALIZED VIEW がこの句なしで実行された場合に行う通常の言語チェックを実行し、通常どおり生成されたエラーが返されます。
データベースサーバは実際のビューの作成を行わないため、作成時に発生する特定のエラーは生成されません。たとえば、指定されたビュー名がすでに存在することを示すエラーは生成されません。このため、CHECK 句を使用すると、ビューの命名で競合することなく、ビュー定義の変更をテストできます。
CHECK IMMEDIATE REFRESH が使用される場合、データベースサーバは即時ビューで構文が有効であるかを検証し、エラーを返します。
データベースへの変更は行われず、トランザクションログには何も記録されません。
文実行の開始時に暗黙的なコミットがあり、実行中に取得されたすべてのロックを解放するロールバックが最後に行われます。
マテリアライズドビューを作成すると、これは手動ビューとなり、初期化されていない状態です。つまり、再表示タイプは手動であり、ビューは再表示されていません (データは移植されています)。このビューを初期化するには、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 システムプロシージャは、マテリアライズドビューに影響しません。
ユーザ本人が所有するマテリアライズドビューを作成するには、CREATE MATERIALIZED VIEW システム権限が必要です。また、マテリアライズドビューによって参照される基本オブジェクトを所有しているか、そのオブジェクトに対する SELECT 権限を持っている必要があります。
他のユーザが所有するマテリアライズドビューを作成するには、CREATE ANY MATERIALIZED VIEW または CREATE ANY OBJECT システム権限が必要です。
実行中に、CREATE MATERIALIZED VIEW 文は、マテリアライズドビューから参照されるすべてのテーブルに排他ロックをかけますが、ブロックは実行しません。参照テーブルのいずれかがロックできない場合、文は失敗し、エラーが返されます。
SQL/2008 ベンダー拡張。
次の例は、SQL Anywhere サンプルデータベースに格納されている従業員に関する機密情報を含むマテリアライズドビューを作成します。この後、ビューを初期化して使用するには、例に示すように REFRESH MATERIALIZED VIEW 文を実行する必要があります。
CREATE MATERIALIZED VIEW EmployeeConfid2 AS SELECT EmployeeID, Employees.DepartmentID, SocialSecurityNumber, Salary, ManagerID, Departments.DepartmentName, Departments.DepartmentHeadID FROM GROUPO.Employees, GROUPO.Departments WHERE Employees.DepartmentID=Departments.DepartmentID; REFRESH MATERIALIZED VIEW EmployeeConfid2;