Thread: Please clarify with regard to Renaming a Sequence
Dear Sirs,
We are working on Postgresql for one of our on going project. We have come across a situation as mentioned below.
1. We have to create a table with sequence dynamically from the front end ( through a JSP code)
2. An option for the user is given to change the name of the table in the front end. During this process, we change the name of the table and its relative sequence too. But the table which was first created with a sequence has its property written in its property field. Now if we change that property in that field, will the sequence gets disturbed??
For say, I create a table 'addrtech' which has two fields, empid and empname
2. The emp id has a sequence created dynamically. so a sequence name addrtech_empid_seq is created.
3. The field empid in addrtech has in its DEFAULT column as " nextval('"addrtech_empid_seq"'::text) "
4. Now I rename addrtech to addrtechnology
5. So the table is altered
6. The sequence is also altered as addrtechnology_empid_seq and the new table is addrtechnology
But the doubt now is the field which has the sequence i.e the empid which has nextval('"addrtech_empid_seq"'::text) . The property if changed to nextval('"addrtechnology_empid_seq"'::text) will the seqeunce remain the same. Meaning if it had some few million records in the orginial table addrtech and if additional data is entere to addrtechnology will the sequence continue.
Please clarify this query of mine at the earliest so that we can incorporate the same in our codes
Your early reply is solicitated
regards
Andy
On Fri, Mar 21, 2003 at 08:08:59PM +0530, Anand B Kumar wrote: > Dear Sirs, > > We are working on Postgresql for one of our on going project. We have come across a situation as mentioned below. > > 1. We have to create a table with sequence dynamically from the front end ( through a JSP code) > 2. An option for the user is given to change the name of the table in the front end. During this process, we change thename of the table and its relative sequence too. But the table which was first created with a sequence has its propertywritten in its property field. Now if we change that property in that field, will the sequence gets disturbed?? > > For say, I create a table 'addrtech' which has two fields, empid and empname > 2. The emp id has a sequence created dynamically. so a sequence name addrtech_empid_seq is created. > 3. The field empid in addrtech has in its DEFAULT column as " nextval('"addrtech_empid_seq"'::text) " > 4. Now I rename addrtech to addrtechnology > 5. So the table is altered > 6. The sequence is also altered as addrtechnology_empid_seq and the new table is addrtechnology > > But the doubt now is the field which has the sequence i.e the empid which has nextval('"addrtech_empid_seq"'::text) . The property if changed to nextval('"addrtechnology_empid_seq"'::text) will the seqeunce remain the same. Meaning if ithad some few million records in the orginial table addrtech and if additional data is entere to addrtechnology will thesequence continue. > > Please clarify this query of mine at the earliest so that we can incorporate the same in our codes The database won't update the default for you, you'll have to do that yourself with ALTER TABLE SET DEFAULT. -- Martijn van Oosterhout <kleptog@svana.org> http://svana.org/kleptog/ > IT is not something like pizza that you order in at one o'clock in > the morning. - John Loebenstein, St George CIO
Attachment
From what I can see the sequence name is not changed when you rename a table test=# alter table fooseq rename to fooseq1; ALTER TABLE test=# \d fooseq1 Table "public.fooseq1" Column | Type | Modifiers --------+---------+-------------------------------------------------------- id | integer | not null default nextval('public.fooseq_id_seq'::text) so everything should work as expected. Dave On Fri, 2003-03-21 at 09:38, Anand B Kumar wrote: > Dear Sirs, > > We are working on Postgresql for one of our on going project. We have > come across a situation as mentioned below. > > 1. We have to create a table with sequence dynamically from the front > end ( through a JSP code) > 2. An option for the user is given to change the name of the table in > the front end. During this process, we change the name of the table > and its relative sequence too. But the table which was first created > with a sequence has its property written in its property field. Now > if we change that property in that field, will the sequence gets > disturbed?? > > For say, I create a table 'addrtech' which has two fields, empid and > empname > 2. The emp id has a sequence created dynamically. so a sequence > name addrtech_empid_seq is created. > 3. The field empid in addrtech has in its DEFAULT column as > " nextval('"addrtech_empid_seq"'::text) " > 4. Now I rename addrtech to addrtechnology > 5. So the table is altered > 6. The sequence is also altered as addrtechnology_empid_seq and the > new table is addrtechnology > > But the doubt now is the field which has the sequence i.e the empid > which has nextval('"addrtech_empid_seq"'::text) . The property if > changed to nextval('"addrtechnology_empid_seq"'::text) will the > seqeunce remain the same. Meaning if it had some few million records > in the orginial table addrtech and if additional data is entere to > addrtechnology will the sequence continue. > > Please clarify this query of mine at the earliest so that we can > incorporate the same in our codes > > > Your early reply is solicitated > > regards > Andy > > > > ______________________________________________________________________ > Upgrade Your Email - Click here! -- Dave Cramer <dave@fastcrypt.com> Cramer Consulting
Dear Dave, Thanx a lot for your help. But still, the doubt lies, whether we can change the property of a table which has bulk recods on it!!! Does pgsql support that?? Even though u alter the name of the sequence, we need to change the sequence name ( meaning the property in the default field) in the altered table also, which should now point to the new altered sequence. Please advice thanx Andy ----- Original Message ----- From: "Dave Cramer" <dave@fastcrypt.com> To: "Anand B Kumar" <akumar@addr.com> Cc: <pgsql-general@postgresql.org>; <pgsql-hackers@postgresql.org> Sent: Saturday, March 22, 2003 8:42 PM Subject: Re: [HACKERS] Please clarify with regard to Renaming a Sequence > >From what I can see the sequence name is not changed when you rename a > table > > test=# alter table fooseq rename to fooseq1; > ALTER TABLE > test=# \d fooseq1 > Table "public.fooseq1" > Column | Type | Modifiers > --------+---------+------------------------------------------------------- - > id | integer | not null default > nextval('public.fooseq_id_seq'::text) > > so everything should work as expected. > > Dave > > On Fri, 2003-03-21 at 09:38, Anand B Kumar wrote: > > Dear Sirs, > > > > We are working on Postgresql for one of our on going project. We have > > come across a situation as mentioned below. > > > > 1. We have to create a table with sequence dynamically from the front > > end ( through a JSP code) > > 2. An option for the user is given to change the name of the table in > > the front end. During this process, we change the name of the table > > and its relative sequence too. But the table which was first created > > with a sequence has its property written in its property field. Now > > if we change that property in that field, will the sequence gets > > disturbed?? > > > > For say, I create a table 'addrtech' which has two fields, empid and > > empname > > 2. The emp id has a sequence created dynamically. so a sequence > > name addrtech_empid_seq is created. > > 3. The field empid in addrtech has in its DEFAULT column as > > " nextval('"addrtech_empid_seq"'::text) " > > 4. Now I rename addrtech to addrtechnology > > 5. So the table is altered > > 6. The sequence is also altered as addrtechnology_empid_seq and the > > new table is addrtechnology > > > > But the doubt now is the field which has the sequence i.e the empid > > which has nextval('"addrtech_empid_seq"'::text) . The property if > > changed to nextval('"addrtechnology_empid_seq"'::text) will the > > seqeunce remain the same. Meaning if it had some few million records > > in the orginial table addrtech and if additional data is entere to > > addrtechnology will the sequence continue. > > > > Please clarify this query of mine at the earliest so that we can > > incorporate the same in our codes > > > > > > Your early reply is solicitated > > > > regards > > Andy > > > > > > > > ______________________________________________________________________ > > Upgrade Your Email - Click here! > -- > Dave Cramer <dave@fastcrypt.com> > Cramer Consulting > >
Postgres manages sequences using DEFAULT, which means that if you insert a row with the sequence column set to DEFAULT, or omit the row in the insert, then the default value will be inserted. This is usually nextval('sequence_name'). There is no underlying magic other than this. So, as long as you ensure that the new sequence you create has the correct start value, and you change the default constraint on the column you are free to do as you wish with the sequences. Have a look at what pg_dump does with sequences and tables. Dave On Sun, 2003-03-23 at 23:20, Anand B Kumar wrote: > Dear Dave, > > Thanx a lot for your help. But still, the doubt lies, whether we can change > the property of a table which has bulk recods on it!!! Does pgsql support > that?? Even though u alter the name of the sequence, we need to change the > sequence name ( meaning the property in the default field) in the altered > table also, which should now point to the new altered sequence. > > Please advice > thanx > Andy > > > ----- Original Message ----- > From: "Dave Cramer" <dave@fastcrypt.com> > To: "Anand B Kumar" <akumar@addr.com> > Cc: <pgsql-general@postgresql.org>; <pgsql-hackers@postgresql.org> > Sent: Saturday, March 22, 2003 8:42 PM > Subject: Re: [HACKERS] Please clarify with regard to Renaming a Sequence > > > > >From what I can see the sequence name is not changed when you rename a > > table > > > > test=# alter table fooseq rename to fooseq1; > > ALTER TABLE > > test=# \d fooseq1 > > Table "public.fooseq1" > > Column | Type | Modifiers > > --------+---------+------------------------------------------------------- > - > > id | integer | not null default > > nextval('public.fooseq_id_seq'::text) > > > > so everything should work as expected. > > > > Dave > > > > On Fri, 2003-03-21 at 09:38, Anand B Kumar wrote: > > > Dear Sirs, > > > > > > We are working on Postgresql for one of our on going project. We have > > > come across a situation as mentioned below. > > > > > > 1. We have to create a table with sequence dynamically from the front > > > end ( through a JSP code) > > > 2. An option for the user is given to change the name of the table in > > > the front end. During this process, we change the name of the table > > > and its relative sequence too. But the table which was first created > > > with a sequence has its property written in its property field. Now > > > if we change that property in that field, will the sequence gets > > > disturbed?? > > > > > > For say, I create a table 'addrtech' which has two fields, empid and > > > empname > > > 2. The emp id has a sequence created dynamically. so a sequence > > > name addrtech_empid_seq is created. > > > 3. The field empid in addrtech has in its DEFAULT column as > > > " nextval('"addrtech_empid_seq"'::text) " > > > 4. Now I rename addrtech to addrtechnology > > > 5. So the table is altered > > > 6. The sequence is also altered as addrtechnology_empid_seq and the > > > new table is addrtechnology > > > > > > But the doubt now is the field which has the sequence i.e the empid > > > which has nextval('"addrtech_empid_seq"'::text) . The property if > > > changed to nextval('"addrtechnology_empid_seq"'::text) will the > > > seqeunce remain the same. Meaning if it had some few million records > > > in the orginial table addrtech and if additional data is entere to > > > addrtechnology will the sequence continue. > > > > > > Please clarify this query of mine at the earliest so that we can > > > incorporate the same in our codes > > > > > > > > > Your early reply is solicitated > > > > > > regards > > > Andy > > > > > > > > > > > > ______________________________________________________________________ > > > Upgrade Your Email - Click here! > > -- > > Dave Cramer <dave@fastcrypt.com> > > Cramer Consulting > > > > > > > ---------------------------(end of broadcast)--------------------------- > TIP 1: subscribe and unsubscribe commands go to majordomo@postgresql.org -- Dave Cramer <dave@fastcrypt.com> Cramer Consulting