他のバージョンの文書 15 | 14 | 13 | 12 | 11 | 10 | 9.6 | 9.5 | 9.4 | 9.3 | 9.2 | 9.1 | 9.0 | 8.4 | 8.3 | 8.2 | 8.1 | 8.0 | 7.4 | 7.3 | 7.2

ALTER VIEW

ALTER VIEW — ビュー定義を変更する

概要

ALTER VIEW [ IF EXISTS ] name ALTER [ COLUMN ] column_name SET DEFAULT expression
ALTER VIEW [ IF EXISTS ] name ALTER [ COLUMN ] column_name DROP DEFAULT
ALTER VIEW [ IF EXISTS ] name OWNER TO { new_owner | CURRENT_USER | SESSION_USER }
ALTER VIEW [ IF EXISTS ] name RENAME TO new_name
ALTER VIEW [ IF EXISTS ] name SET SCHEMA new_schema
ALTER VIEW [ IF EXISTS ] name SET ( view_option_name [= view_option_value] [, ... ] )
ALTER VIEW [ IF EXISTS ] name RESET ( view_option_name [, ... ] )

説明

ALTER VIEWはビューの各種補助属性を変更します。 (ビューを定義する問い合わせを変更したい場合はCREATE OR REPLACE VIEWを使用してください。)

ALTER VIEWを使用するためには、ビューの所有者でなければなりません。 またビューのスキーマを変更するためには、新しいスキーマ上にCREATE権限を持たなければなりません。 さらに所有者を変更するためには、新しく所有者となるロールの直接あるいは間接的なメンバでなければならず、かつ、そのロールはビューのスキーマ上にCREATE権限を持たなければなりません。 (これらの制限は、ビューの削除および再作成によりユーザが実行できないことを、所有者の変更により実行できないようにするためのものです。 しかし、スーパーユーザはすべてのビューの所有者を変更することができます。)

パラメータ

name

既存のビューの名前(スキーマ修飾可)です。

IF EXISTS

ビューが存在する場合にエラーとしません。 この場合には注意メッセージが発行されます。

SET/DROP DEFAULT

この構文は列のデフォルト値を設定または削除します。 ビューの列のデフォルト値は、ビューに対するルールやトリガが適用される前にビューを対象とした任意のINSERTまたはUPDATEコマンド内に代入されます。 したがってビューのデフォルトは基となるリレーションのデフォルト値よりも優先度が高くなります。

new_owner

ビューの新しい所有者のユーザ名です。

new_name

ビューの新しい名前です。

new_schema

ビューの新しいスキーマです。

SET ( view_option_name [= view_option_value] [, ... ] )
RESET ( view_option_name [, ... ] )

ビューのオプションを設定またはクリアします。 現在、サポートされるオプションは以下の通りです。

check_option (string)

ビューのcheck optionを変更します。 値はlocalまたはcascadedのいずれかでなければなりません。

security_barrier (boolean)

ビューのsecurity-barrier属性を変更します。 値はtruefalseのような論理値でなければなりません。

注釈

歴史的な理由により、ALTER TABLEをビューに対して使用することができます。 ただし、使用可能な構文は上記のビューに対して許される構文に対応するALTER TABLEの構文のみです。

ビューfooの名前をbarに変更します。

ALTER VIEW foo RENAME TO bar;

更新可能ビューにデフォルトの列値を付与します。

CREATE TABLE base_table (id int, ts timestamptz);
CREATE VIEW a_view AS SELECT * FROM base_table;
ALTER VIEW a_view ALTER COLUMN ts SET DEFAULT now();
INSERT INTO base_table(id) VALUES(1);  -- ts will receive a NULL
INSERT INTO a_view(id) VALUES(2);  -- ts will receive the current time

互換性

ALTER VIEWは標準SQLに対するPostgreSQLの拡張です。

関連項目

CREATE VIEW, DROP VIEW