> ---Bruce Momjian <maillist@candle.pha.pa.us> wrote:
> >
> > Thank you for pointing out my error. It should be:
> >
> > CREATE TABLE new_table (mycol int);
> > INSERT INTO new_table (oid, mycol) SELECT oid, mycol FROM
> old_table;
> >
> > I have updated the FAQ.
>
> Hmm... now I don't get an error, but the oid isn't preserved. This is
> running 6.3.2 on RH Linux:
>
> dmdemo=> CREATE TABLE new_table (mycol int);
> CREATE
> dmdemo=> CREATE TABLE old_table (mycol int);
> CREATE
> dmdemo=> insert into old_table values (33);
> INSERT 837643 1
> dmdemo=> select oid from old_table;
> oid
> ------
> 837643
> (1 row)
>
> dmdemo=> INSERT INTO new_table (oid, mycol) SELECT oid, mycol FROM
> dmdemo-> old_table;
> INSERT 837644 1
> dmdemo=> select oid from new_table;
> oid
> ------
> 837644
> (1 row)
>
> Further suggestions?
OK, I have a fix for you.
CREATE TABLE new(old_oid oid, mycol int);
SELECT INTO new SELECT old_oid, mycol FROM old;
COPY new TO '/tmp/x';
DELETE FROM new;
COPY new WITH OIDS FROM '/tmp/x';
Does this work for your purposes? I have updated the FAQ.
Should we allow oid's to be transfered via INSERT? I think we should.
INSERT INTO new_table (oid, mycol) SELECT oid, mycol FROM old_table
--
Bruce Momjian | http://www.op.net/~candle
maillist@candle.pha.pa.us | (610) 853-3000
+ If your life is a hard drive, | 830 Blythe Avenue
+ Christ can be your backup. | Drexel Hill, Pennsylvania 19026