ALTER VIEW — ビュー定義を変更する
ALTER VIEW [ IF EXISTS ]nameALTER [ COLUMN ]column_nameSET DEFAULTexpressionALTER VIEW [ IF EXISTS ]nameALTER [ COLUMN ]column_nameDROP DEFAULT ALTER VIEW [ IF EXISTS ]nameOWNER TO {new_owner| CURRENT_USER | SESSION_USER } ALTER VIEW [ IF EXISTS ]nameRENAME [ COLUMN ]column_nameTOnew_column_nameALTER VIEW [ IF EXISTS ]nameRENAME TOnew_nameALTER VIEW [ IF EXISTS ]nameSET SCHEMAnew_schemaALTER VIEW [ IF EXISTS ]nameSET (view_option_name[=view_option_value] [, ... ] ) ALTER VIEW [ IF EXISTS ]nameRESET (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の拡張です。