On Thu, Nov 14, 2019 at 10:12:22AM -0500, Tom Lane wrote:
> Adrian Klaver <adrian.klaver@aklaver.com> writes:
> > On 11/14/19 5:53 AM, stan wrote:
> >> I am trying to add columns to a view using CREATE OR REPLACE VIEW, and I am
> >> getting the following error:
> >> ERROR: cannot change name of view column "descrip" to "contact_person_1"
> >> Am I missing something here?
>
> > https://www.postgresql.org/docs/11/sql-createview.html
>
> > "CREATE OR REPLACE VIEW is similar, but if a view of the same name
> > already exists, it is replaced. The new query must generate the same
> > columns that were generated by the existing view query (that is, the
> > same column names in the same order and with the same data types), but
> > it may add additional columns to the end of the list. The calculations
> > giving rise to the output columns may be completely different."
>
> Yeah, the important point being that you can only add columns at the
> *end* of the view, just like you can only add table columns at the
> end. The same-names-and-types check is intended to catch simple
> mistakes in this area.
>
> If you actually want to rename an existing view column, use
> ALTER TABLE ... RENAME COLUMN ... for that. (We probably ought
> to offer an ALTER VIEW spelling of that, but we don't ATM.
> ALTER TABLE works though.)
Thanks.
I am just starting to explore this area at all. I thought I just added a
column to a table, and did not realize that it was apended as the last
column. Don't see why I care in that case, though.
--
"They that would give up essential liberty for temporary safety deserve
neither liberty nor safety."
-- Benjamin Franklin