本ページでは、具体化されたビューの作成方法について説明します。
構文
CREATE MATERIALIZED VIEW name
[build clause][create mv refresh] AS subquery
build_clause は次のとおりです。
BUILD {IMMEDIATE | DEFERRED}
create_mv_refresh は次のとおりです。
REFRESH [COMPLETE] [ON DEMAND]
パラメーター
パラメーター | 説明 |
---|---|
name | 作成するビューの名前。 名前はスキーマで修飾することができます。 |
subquery | ビューの内容を指定する SELECT 文。 有効なクエリの詳細については、SELECT をご参照ください。 |
build clause | build_clause を含めて、ビューにデータが入力されるタイミングを指定します。 BUILD IMMEDIATE または BUILD DEFERRED を指定します。
|
create mv refresh | 具体化されたビューのコンテンツをいつ更新する必要があるかを指定するには、create_mv_refresh 句を含めます。 句には、REFRESH キーワードの後に
COMPLETE または ON DEMAND、あるいはその両方が含まれます。
|
説明
CREATE MATERIALIZED VIEW は、ビューがクエリで参照されるたびに更新されないクエリのビューを定義します。 デフォルトでは、ビューの作成時にビューにデータが入力されます。 BUILD DEFERRED キーワードを含めて、ビューの作成を遅らせることができます。
具体化されたビューはスキーマで修飾することができます。 CREATE MATERIALIZED VIEW 文の実行時にスキーマ名を指定すると、指定したスキーマにビューが作成されます。 ビュー名は、同じスキーマ内の他のビュー、テーブル、シーケンス、またはインデックスの名前とは異なる必要があります。
注
- 具体化されたビューは読み取り専用です。 サーバーでは、ビューに対する INSERT、UPDATE、または DELETE 操作が許可されていません。
- ビューで参照されるテーブルへのアクセスは、ビュー所有者の権限によって決定されます。 ビューのユーザーは、ビューで使用されるすべての関数を呼び出す権限を持っている必要があります。
- Postgres REFRESH MATERIALIZED VIEW 文の詳細については、https://www.postgresql.org/docs/11/sql-refreshmaterializedview.html にある PostgreSQL コアのドキュメントをご参照ください。
例
次の文は、dept_30 という名前の具体化されたビューを作成します。
CREATE MATERIALIZED VIEW dept_30 BUILD IMMEDIATE AS SELECT * FROM emp WHERE deptno = 30;