Re: nextval/dbi question - Mailing list pgsql-novice

From harrold@sage.che.pitt.edu
Subject Re: nextval/dbi question
Date
Msg-id Pine.LNX.4.21.0108051836560.10373-100000@sage.che.pitt.edu
Whole thread Raw
In response to Re: nextval/dbi question  (Horst Herb <hherb@malleenet.net.au>)
Responses Re: nextval/dbi question  (Horst Herb <hherb@malleenet.net.au>)
Re: nextval/dbi question  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-novice
Sometime in August Horst Herb assaulted keyboard and produced...

|On Monday 06 August 2001 06:55, you wrote:
|
|> this is what i'm doing:
|> # i get the new value like this:
|> select nextval('testtable_the_key_seq');
|
|you are not assigning it to any variable?
|
|> #and then i preforme the insert like this:
|> insert into testtable (an_id, timestamp) values (2, 2);
|
|I assume that an_id is not your primary key?
|
|> say the last value of  the sequence is 'n-1' so the select nextval
|> statement above will return 'n' but when i preform the insert the value of
|> testtable.the_key is actually 'n+1'. should i wrap the insert up into a
|> transaction? any help would be most appreciated.
|>
|> i dont know if this is relevent but in perl i'm preparing the statement by
|> using (?,?) and place holders for the (2,2).
|
|Why do you call nextval? If your key attribute is "serial", postgres calls
|nextval for you autiomatically. Thus, you call it once and postgres calls it
|once, hence an increment of 2
|
|Horst

this is what i want to do:
i want to insert data into a table that has a serialized key. then i want
the value of the key for the row i just inserted. from the stuff i read
on the net i though i was supposed to run the nextval command first then
preform the insert. referring specifically to the url below:

http://www.mail-archive.com/dbi-users@isc.org/msg15723.html

i was under the impression that nextval would give what the nextval would
be. i didnt think it was suppose to increment it. after reading your
response and someone else's it seems i need to get the next value of the
key and insert it explicitly is that correct?

for what it's worth the sql to create the table:
CREATE TABLE testtable(
    the_key     serial,
    an_id       int4,
    timestamp   int4,
    PRIMARY KEY(the_key));



thanks
john


pgsql-novice by date:

Previous
From: Horst Herb
Date:
Subject: Re: nextval/dbi question
Next
From: Horst Herb
Date:
Subject: Re: nextval/dbi question