sequences
От | Patrick Welche |
---|---|
Тема | sequences |
Дата | |
Msg-id | E10cvBR-0006Ta-00@quartz.newn.cam.ac.uk обсуждение исходный текст |
Список | 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
В списке pgsql-interfaces по дате отправления: