Thread: Re: [SQL] Retrieving the new "nextval" for primary keys....
Greg Patnude wrote: > I am using postgreSQL with Perl::CGI and Perl::DBI::Pg... I would like to be > able to insert a row from my Perl script [$SQL->exec();] and have postgreSQL > return the id of the newly inserted record (new.id) directly to the Perl > script for further processing... Anyone with a solution / idea ??? > > Nearly EVERY table I create in postgreSQL (7.2) has the following minimum > structure: > > create table "tblName" ( > > id int4 primary key nextval ("tblName_id_seq"), > > ..field... > ) You can either do it in 2 statements, something like: $dbh->do("insert into tblName ..."); my ($id) = $dbh->selectrow_array("select currval('tblName_id_seq')"); Or you could create a function which takes the insert statement, and ends with doing a select on the currval (as above) and returning that. As I do the 2 statement approach above, I haven't done a function, but it doesn't look like it would be that hard to do. HTH, Kevin
On Wed, 28 Aug 2002 18:36:10 +0200 (CEST) friedrich nietzsche <nietzsche_psql@yahoo.it> wrote: > One solution seems to locking table(s), > but I prefer to leave it as last chance... > using table locks, and the trick of writing and > suddenly reading back from DB it probably works, > but it doesn't seems so sexy... :) > ciao > danilo > Why would you have to lock the table? currval() is connection safe. I would either do the insert and then do a currval() OR do a nextval() and do the insert. Either one would work. I always just do the insert and then call currval() to get the current serial number for the connection. GB -- GB Clark II | Roaming FreeBSD Admin gclarkii@VSServices.COM | General Geek CTHULU for President - Why choose the lesser of two evils?
One solution seems to locking table(s), but I prefer to leave it as last chance... using table locks, and the trick of writing and suddenly reading back from DB it probably works, but it doesn't seems so sexy... :) ciao danilo ______________________________________________________________________ Yahoo! Musica: notizie, recensioni, classifiche, speciali multimediali http://it.yahoo.com/mail_it/foot/?http://it.music.yahoo.com/