Thread: serial type question

serial type question

From
"postgresql"
Date:
I have a table that I want to add a serial type column. Is there a way 
to add it or do I have to create a new table and insert into it. I have 
experimented with:

insert into newdb (name) select name from olddb order by jobno;

however, pg does not allow the 'order by' during an insert/select

I am on version 7.0.3

Maybe I don't need to do this. What I am trying to accomplish is to 
have PG create job numbers. Today, I only have 2 workstations that 
push jobs into the server and PG tracks the job number. However, I 
have been informed that in the next 6-8 months the number of job 
creation workstations will grow to 8 - 10. 

I would like to migrate to a job number created when the insert is 
done.

Thanks for  your  help.

Ted Petrosky




Re: serial type question

From
Stephan Szabo
Date:
On Mon, 19 Mar 2001, postgresql wrote:

> I have a table that I want to add a serial type column. Is there a way 
> to add it or do I have to create a new table and insert into it. I have 
> experimented with:
> 
> insert into newdb (name) select name from olddb order by jobno;
> 
> however, pg does not allow the 'order by' during an insert/select
> 
> I am on version 7.0.3

The type of query above seems to work in 7.1, but...

> Maybe I don't need to do this. What I am trying to accomplish is to 
> have PG create job numbers. Today, I only have 2 workstations that 
> push jobs into the server and PG tracks the job number. However, I 
> have been informed that in the next 6-8 months the number of job 
> creation workstations will grow to 8 - 10. 
> 
> I would like to migrate to a job number created when the insert is 
> done.

Because serial only is a column with a default gathered from a sequence,
if you can just use the jobno's from the old table, I'd say you
just might want to make it, load the jobno's you already have and set the
sequence value higher than those, new rows will get new automatic jobno's
and the old ones will keep their values.




Re: serial type question

From
Richard Huxton
Date:
postgresql wrote:
> 
> I have a table that I want to add a serial type column. Is there a way
> to add it or do I have to create a new table and insert into it. I have
> experimented with:
> 
> insert into newdb (name) select name from olddb order by jobno;
> 
> however, pg does not allow the 'order by' during an insert/select

Doesn't make sense on an insert - you want an alter table followed by an
update. An insert will add new rows, not just add values to a column.

> I am on version 7.0.3
> 
> Maybe I don't need to do this. What I am trying to accomplish is to
> have PG create job numbers. Today, I only have 2 workstations that
> push jobs into the server and PG tracks the job number. However, I
> have been informed that in the next 6-8 months the number of job
> creation workstations will grow to 8 - 10.

A serial type is basically nothing more than a sequence with a column
that uses the sequence as a default value. There's more on this in the
docs (a couple of lines in the notes I wrote off
techdocs.postgresql.org) but the simplest way to see how it works is to
define a table foo with a serial in it and do a \d or pg_dump it to see
how it works.

> I would like to migrate to a job number created when the insert is
> done.

Once you see how it works, pg_dump the database, edit the file and
re-import the data. Nice clean solution and easy to cope with if
something goes wrong.

- Richard Huxton