ALTER VIEW — ビュー定義を変更する
ALTER VIEW [ IF EXISTS ]name
ALTER [ COLUMN ]column_name
SET DEFAULTexpression
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 [ COLUMN ]column_name
TOnew_column_name
ALTER VIEW [ IF EXISTS ]name
RENAME TOnew_name
ALTER VIEW [ IF EXISTS ]name
SET SCHEMAnew_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
既存のビューの名前(スキーマ修飾可)です。
column_name
既存の列の名前です。
new_column_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
(enum
)
ビューのcheck optionを変更します。
値はlocal
またはcascaded
のいずれかでなければなりません。
security_barrier
(boolean
)
ビューのsecurity-barrier属性を変更します。
値はtrue
やfalse
のような論理値でなければなりません。
歴史的な理由により、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の拡張です。