sequences

From: "Patrick Welche" <prlw1(at)newn(dot)cam(dot)ac(dot)uk>
To: pgsql-interfaces(at)postgresql(dot)org
Subject: sequences
Date: 1999-04-29 18:05:13
Message-ID: E10cvBR-0006Ta-00@quartz.newn.cam.ac.uk
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-interfaces

After the interesting discussion on what is the safest way to have a unique
"oid"-like value per row, I thought I would have a go, but from libpq++ I
don't seem to be able to read the new sequence value:

Table = person
+----------------------------------+----------------------------------+-------+
| Field | Type | Length|
+----------------------------------+----------------------------------+-------+
| id | int4 not null default nextval('p | 4 |
| surname | text not null | var |
| firstname | text not null | var |
| email | text | var |
| phone | text | var |
| rfbdate | date | 4 |
+----------------------------------+----------------------------------+-------+
Index: person_id_key

The output from my test program is:

INSERT INTO person (surname,firstname,email,phone) VALUES ('Welche','Patrick','
prlw1',null)
SELECT currval('person_id_seq')

Missing person id

and the relevant bit of code is:

query<<"INSERT INTO person (surname,firstname,email,phone) VALUES ('"
<<a._surname<<"','"<<a._firstname<<"',"
<<ISNULL(a._email)<<','
<<ISNULL(a._phone)<<')'<<ends;
s.send_query(query);
query<<"SELECT currval('person_id_seq')"<<ends;
s.send_query(query);
if(s.Tuples()!=1)throw empty_result("Missing person id");
a.id(toid(s.GetValue(0,"currval")));

send_query prints the query and does a Exec(query). I suppose I don't
understand the difference between doing things interactively in psql (the
above INSERT and SELECT work then) and calling things from a program. Any
tips?

Cheers,

Patrick

Browse pgsql-interfaces by date

  From Date Subject
Next Message JT Kirkpatrick 1999-04-29 18:07:32 perl / pg / cgi / postgres
Previous Message Oliver Elphick 1999-04-29 17:24:09 Re: [INTERFACES] RPM for PgAccess 0.96