Re: ALTERING A TABLE

Поиск
Список
Период
Сортировка
От Ed Loehr
Тема Re: ALTERING A TABLE
Дата
Msg-id 3936B01E.2FA53C4E@austin.rr.com
обсуждение исходный текст
Ответ на ALTERING A TABLE  (Peter Landis <ntwebdeveloper@yahoo.com>)
Список pgsql-general
Steve Wampler wrote:
>
> Ron Peterson wrote:
> >
> >
> > You can't use ALTER TABLE to change a field's data description.  You'll
> > have to make a new table.  Then use SELECT INTO to move your data.  Then
> > DROP TABLE oldtable.  Then ALTER TABLE tablename RENAME TO newname.
>
> Would this really work?  According to the docs, SELECT INTO creates a
> new table (which must not yet exist).  So this new table
> would have the same field data descriptions as the original, right?
>
> Is the documentation wrong?

No, the doc is at least right that a new table is created.  Not sure what
it does if the table already exists.

I do this task by the following sequence (psuedo-sql here):

    select into temp_mytable * from mytable;
    drop mytable;
    create table mytable (...new defn...);
    insert into mytable (...)
        select ... from temp_mytable

And that works pretty well.  Don't forget you'll have to drop/reload all
dependent functions/triggers.  And if you're using a SERIAL column, don't
mistakenly nuke your sequence object (mytable_id_seq) if you're using one
as a primary key generator, otherwise you'll reset the sequence and get
massive confusion.

Regards,
Ed Loehr

В списке pgsql-general по дате отправления:

Предыдущее
От: Ed Loehr
Дата:
Сообщение: Re: btree index and max()
Следующее
От: Mike Mascari
Дата:
Сообщение: Re: ALTERING A TABLE