| <!-- |
| doc/src/sgml/ref/alter_view.sgml |
| PostgreSQL documentation |
| --> |
| |
| <refentry id="sql-alterview"> |
| <indexterm zone="sql-alterview"> |
| <primary>ALTER VIEW</primary> |
| </indexterm> |
| |
| <refmeta> |
| <refentrytitle>ALTER VIEW</refentrytitle> |
| <manvolnum>7</manvolnum> |
| <refmiscinfo>SQL - Language Statements</refmiscinfo> |
| </refmeta> |
| |
| <refnamediv> |
| <refname>ALTER VIEW</refname> |
| <refpurpose>change the definition of a view</refpurpose> |
| </refnamediv> |
| |
| <refsynopsisdiv> |
| <synopsis> |
| ALTER VIEW [ IF EXISTS ] <replaceable class="parameter">name</replaceable> ALTER [ COLUMN ] <replaceable class="parameter">column_name</replaceable> SET DEFAULT <replaceable class="parameter">expression</replaceable> |
| ALTER VIEW [ IF EXISTS ] <replaceable class="parameter">name</replaceable> ALTER [ COLUMN ] <replaceable class="parameter">column_name</replaceable> DROP DEFAULT |
| ALTER VIEW [ IF EXISTS ] <replaceable class="parameter">name</replaceable> OWNER TO { <replaceable class="parameter">new_owner</replaceable> | CURRENT_ROLE | CURRENT_USER | SESSION_USER } |
| ALTER VIEW [ IF EXISTS ] <replaceable class="parameter">name</replaceable> RENAME [ COLUMN ] <replaceable class="parameter">column_name</replaceable> TO <replaceable class="parameter">new_column_name</replaceable> |
| ALTER VIEW [ IF EXISTS ] <replaceable class="parameter">name</replaceable> RENAME TO <replaceable class="parameter">new_name</replaceable> |
| ALTER VIEW [ IF EXISTS ] <replaceable class="parameter">name</replaceable> SET SCHEMA <replaceable class="parameter">new_schema</replaceable> |
| ALTER VIEW [ IF EXISTS ] <replaceable class="parameter">name</replaceable> SET ( <replaceable class="parameter">view_option_name</replaceable> [= <replaceable class="parameter">view_option_value</replaceable>] [, ... ] ) |
| ALTER VIEW [ IF EXISTS ] <replaceable class="parameter">name</replaceable> RESET ( <replaceable class="parameter">view_option_name</replaceable> [, ... ] ) |
| </synopsis> |
| </refsynopsisdiv> |
| |
| <refsect1> |
| <title>Description</title> |
| |
| <para> |
| <command>ALTER VIEW</command> changes various auxiliary properties |
| of a view. (If you want to modify the view's defining query, |
| use <command>CREATE OR REPLACE VIEW</command>.) |
| </para> |
| |
| <para> |
| You must own the view to use <command>ALTER VIEW</command>. |
| To change a view's schema, you must also have <literal>CREATE</literal> |
| privilege on the new schema. |
| To alter the owner, you must also be a direct or indirect member of the new |
| owning role, and that role must have <literal>CREATE</literal> privilege on |
| the view's schema. (These restrictions enforce that altering the owner |
| doesn't do anything you couldn't do by dropping and recreating the view. |
| However, a superuser can alter ownership of any view anyway.) |
| </para> |
| </refsect1> |
| |
| <refsect1> |
| <title>Parameters</title> |
| |
| <variablelist> |
| <varlistentry> |
| <term><replaceable class="parameter">name</replaceable></term> |
| <listitem> |
| <para> |
| The name (optionally schema-qualified) of an existing view. |
| </para> |
| </listitem> |
| </varlistentry> |
| |
| <varlistentry> |
| <term><replaceable class="parameter">column_name</replaceable></term> |
| <listitem> |
| <para> |
| Name of an existing column. |
| </para> |
| </listitem> |
| </varlistentry> |
| |
| <varlistentry> |
| <term><replaceable class="parameter">new_column_name</replaceable></term> |
| <listitem> |
| <para> |
| New name for an existing column. |
| </para> |
| </listitem> |
| </varlistentry> |
| |
| <varlistentry> |
| <term><literal>IF EXISTS</literal></term> |
| <listitem> |
| <para> |
| Do not throw an error if the view does not exist. A notice is issued |
| in this case. |
| </para> |
| </listitem> |
| </varlistentry> |
| |
| <varlistentry> |
| <term><literal>SET</literal>/<literal>DROP DEFAULT</literal></term> |
| <listitem> |
| <para> |
| These forms set or remove the default value for a column. |
| A view column's default value is substituted into any |
| <command>INSERT</command> or <command>UPDATE</command> command whose target is the |
| view, before applying any rules or triggers for the view. The view's |
| default will therefore take precedence over any default values from |
| underlying relations. |
| </para> |
| </listitem> |
| </varlistentry> |
| |
| <varlistentry> |
| <term><replaceable class="parameter">new_owner</replaceable></term> |
| <listitem> |
| <para> |
| The user name of the new owner of the view. |
| </para> |
| </listitem> |
| </varlistentry> |
| |
| <varlistentry> |
| <term><replaceable class="parameter">new_name</replaceable></term> |
| <listitem> |
| <para> |
| The new name for the view. |
| </para> |
| </listitem> |
| </varlistentry> |
| |
| <varlistentry> |
| <term><replaceable class="parameter">new_schema</replaceable></term> |
| <listitem> |
| <para> |
| The new schema for the view. |
| </para> |
| </listitem> |
| </varlistentry> |
| |
| <varlistentry> |
| <term><literal>SET ( <replaceable class="parameter">view_option_name</replaceable> [= <replaceable class="parameter">view_option_value</replaceable>] [, ... ] )</literal></term> |
| <term><literal>RESET ( <replaceable class="parameter">view_option_name</replaceable> [, ... ] )</literal></term> |
| <listitem> |
| <para> |
| Sets or resets a view option. Currently supported options are: |
| <variablelist> |
| <varlistentry> |
| <term><literal>check_option</literal> (<type>enum</type>)</term> |
| <listitem> |
| <para> |
| Changes the check option of the view. The value must |
| be <literal>local</literal> or <literal>cascaded</literal>. |
| </para> |
| </listitem> |
| </varlistentry> |
| <varlistentry> |
| <term><literal>security_barrier</literal> (<type>boolean</type>)</term> |
| <listitem> |
| <para> |
| Changes the security-barrier property of the view. The value must |
| be Boolean value, such as <literal>true</literal> |
| or <literal>false</literal>. |
| </para> |
| </listitem> |
| </varlistentry> |
| </variablelist></para> |
| </listitem> |
| </varlistentry> |
| </variablelist> |
| </refsect1> |
| |
| <refsect1> |
| <title>Notes</title> |
| |
| <para> |
| For historical reasons, <command>ALTER TABLE</command> can be used with |
| views too; but the only variants of <command>ALTER TABLE</command> |
| that are allowed with views are equivalent to the ones shown above. |
| </para> |
| </refsect1> |
| |
| <refsect1> |
| <title>Examples</title> |
| |
| <para> |
| To rename the view <literal>foo</literal> to |
| <literal>bar</literal>: |
| <programlisting> |
| ALTER VIEW foo RENAME TO bar; |
| </programlisting> |
| </para> |
| |
| <para> |
| To attach a default column value to an updatable view: |
| <programlisting> |
| 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 |
| </programlisting></para> |
| </refsect1> |
| |
| <refsect1> |
| <title>Compatibility</title> |
| |
| <para> |
| <command>ALTER VIEW</command> is a <productname>PostgreSQL</productname> |
| extension of the SQL standard. |
| </para> |
| </refsect1> |
| |
| <refsect1> |
| <title>See Also</title> |
| |
| <simplelist type="inline"> |
| <member><xref linkend="sql-createview"/></member> |
| <member><xref linkend="sql-dropview"/></member> |
| </simplelist> |
| </refsect1> |
| </refentry> |