PostgreSQL 8.0.0 文書
前のページ | 巻戻し |  | 早送り | 次のページ

# CREATE VIEW

## 名前

CREATE VIEW -- 新しいビューの定義

## 概要

    CREATE [ OR REPLACE ] VIEW name [ ( column_name [, ...] ) ] AS query

## 説明

`CREATE VIEW`は問い合わせによるビューを定義します。 ビューは物理的な実体として存在するものではありません。 その代わりに、ある問い合わせからビューが参照される度に、指定された問い合わせが実行されます。

`CREATE OR REPLACE VIEW`も同様の働きをします。 しかし、同じ名前のビューがすでに存在している場合は、そのビューを置き換えます。 ビューは、同じ列の集合(つまり、同じ列名およびデータ型)を生成する新規の問い合わせでのみ、置き換えることができます。

スキーマ名が付けられている場合(例えば、`CREATE VIEW myschema.myview ...`)、ビューは指定されたスキーマで作成されます。 スキーマ名がなければ、そのビューは現在のスキーマで作成されます。 ビューの名前は、同じスキーマ内の他のビュー、テーブル、シーケンス、もしくはインデックスとは異なる名前である必要があります。

## パラメータ

`name`

  作成するビューの名前です (スキーマ修飾名でも可)。

`column_name`

  ビューの列に使用する名前のリストです(省略可能)。 省略されている場合、列名は問い合わせから由来したものになります。

`query`

  ビューの列と行を生成する問い合わせ(つまり`SELECT`文)です。

  有効な問い合わせについての詳細は、SELECTを参照してください。

## 注釈

現在のところ、ビューは読み取り専用です。 システムは、ビューに対する挿入、更新、削除を許可しません。 ビューに対する挿入などを他のテーブルに対する適切な処理に書き換えるルールを作成することで、更新可能なビューと同じ効果を得ることができます。 より詳細な情報については、CREATE RULEを参照してください。

ビューを削除するには、`DROP VIEW`文を使用してください。

ビューの列の名前と型は指定通りに割り当てられることに注意してください。 例えば、

    CREATE VIEW vista AS SELECT 'Hello World';

は、次の2点から好ましくありません。 列の名前はデフォルトの`?column?`になり、列のデータ型はデフォルトの`unknown`になります。 ビューの結果として文字リテラルを返したい場合は、以下のように使用してください。

    CREATE VIEW vista AS SELECT text 'Hello World' AS hello;

ビュー内で参照するテーブルへのアクセスは、ビューの所有者の権限で決定されます。 しかし、ビュー内で実行される関数は、ビューを使用する問い合わせから直接その関数が呼び出された場合と同様に扱われます。 従って、ビューを使用するユーザには、ビュー内で使用される全ての関数を呼び出す権限が必要です。

## 例

全ての娯楽映画 (Comedy films) から成るビューを作成します。

    CREATE VIEW comedies AS
        SELECT *
        FROM films
        WHERE kind = 'Comedy';

## 互換性

標準SQLでは、`CREATE VIEW`文に対しいくつかの追加機能を規定しています。

    CREATE VIEW name [ ( column [, ...] ) ]
        AS query
        [ WITH [ CASCADE | LOCAL ] CHECK OPTION ]

完全なSQLコマンドのオプション句は、以下の通りです。

`CHECK OPTION`

  このオプションは、更新される可能性のあるビューに使用しなければなりません。 ビューに対する全ての`INSERT`と`UPDATE`コマンドは、ビュー定義の条件を満足しているか(つまり、新しいデータがビューを通して可視であるか)どうか検査されます。 条件を満たしていない場合、その更新は拒否されます。

`LOCAL`

  このビューの整合性を検査します。

`CASCADE`

  このビューと依存している全てのビューの整合性を検査します。 `CASCADE`または`LOCAL`のいずれも指定されていない場合は、`CASCADE`が指定されたものと仮定されます。

`CREATE OR REPLACE VIEW`はPostgreSQLの言語拡張です。

## 関連項目

DROP VIEW

前のページ | ホーム | 次のページ
CREATE USER | 上に戻る | DEALLOCATE