Re: Adding a New Column Specifically In a Table - Mailing list pgsql-general

From Darren Duncan
Subject Re: Adding a New Column Specifically In a Table
Date
Msg-id 4CB632D8.7000304@darrenduncan.net
Whole thread Raw
In response to Adding a New Column Specifically In a Table  (Carlos Mennens <carlos.mennens@gmail.com>)
Responses Re: Adding a New Column Specifically In a Table  (Rajesh Kumar Mallah <mallah.rajesh@gmail.com>)
List pgsql-general
Carlos Mennens wrote:
> OK so I have read the docs and Google to try and find a way to add a
> new column to an existing table. My problem is I need this new column
> to be created 3rd  rather than just dumping this new column to the end
> of my table. I can't find anywhere how I can insert my new column as
> the 3rd table column rather than the last (seventh). Does anyone know
> how I can accomplish this or if it's even possible. Seems like a
> common task but I checked the documentation and may have missed it in
> my reading.
>
> ALTER TABLE users ADD COLUMN employer VARCHAR(50) NOT NULL;
>
> The above command dumps the 'employer' column at the very end of my
> table which is not what I want.
>
> Thanks for any assistance...

Why do you want to do this?

Columns should only be referenced by their names and not by any kind of ordinal
position.  You should treat the list of columns as being an unordered set, and
so your new column isn't actually in 7th place, and you can display your columns
in any order you want.  Relying on any intrinsic ordinal position of columns is
just going to get you into trouble.

I also didn't see from
http://www.postgresql.org/docs/9.0/interactive/sql-altertable.html how you would
do what you asked.

The page http://wiki.postgresql.org/wiki/Alter_column_position also shows some
contrivances you could go through to get what you want, but it is better to just
not care about order in the first place.

-- Darren Duncan

pgsql-general by date:

Previous
From: Thom Brown
Date:
Subject: Re: Adding a New Column Specifically In a Table
Next
From: Bruno Baguette
Date:
Subject: How to iterate fields into a NEW.* RECORD in a TRIGGER procedure ?