Received: from localhost (postgresql.org [64.49.215.8]) by postgresql.org (Postfix) with ESMTP id 4A199476550 for ; Wed, 28 Aug 2002 12:32:40 -0400 (EDT) Received: from web12901.mail.yahoo.com (web12901.mail.yahoo.com [216.136.174.68]) by postgresql.org (Postfix) with SMTP id AF2FD47653E for ; Wed, 28 Aug 2002 12:32:39 -0400 (EDT) Message-ID: <20020828163245.98872.qmail@web12901.mail.yahoo.com> Received: from [80.19.150.245] by web12901.mail.yahoo.com via HTTP; Wed, 28 Aug 2002 18:32:45 CEST Date: Wed, 28 Aug 2002 18:32:45 +0200 (CEST) From: =?iso-8859-1?q?friedrich=20nietzsche?= Subject: Re: Retrieving the new nextval... To: pgsql-sql MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit X-Virus-Scanned: by AMaViS new-20020517 X-Archive-Number: 200208/398 X-Sequence-Number: 9244 Hi all, I'm in trouble with the same problem, but in PHP.. With your solution, I cannot be totally sure that last inserted raw was mine... Because I'm on a web page, it could be that, as soon as I've inserted my record, another one do an insertion, so I would get the wrong ID... does transactions resolve this, in Psql??? I thought to solve it with a similiar solution, working in transactions inserting a raw and immedialtly after read from DB last raw, but who assure me that all will go right?? If I was on a server app., I (and you, if it is your case) would insert a timestamp, and then I'd select from table where timestamp = mysavedtime; But in my case there could be two or more equals timestamp, cause there's not only one application working with DB... I'm still reading, searching, trying... ciao danilo --- Kevin Brannen ha scritto: > 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 R ______________________________________________________________________ Yahoo! Musica: notizie, recensioni, classifiche, speciali multimediali http://it.yahoo.com/mail_it/foot/?http://it.music.yahoo.com/