Обсуждение: SEQUENCE primary key
Hello I have a question, if I have a table with a SEQUENCE primary key, that obviously, I doesn't give in each new row inserted. For example if the table locks: CREATE SEQUENCE id_seq; CREATE TABLE table ( id integer DEFAULT nextval('id_seq') CONSTRAINT table_id PRIMARY KEY, arg1 integer, arg2 integer ) How can I know which id receive each new row. I mean, <http://ultralingua.com/onlinedictionary/index.html?action=define&ignoreaccents=on&wholewords=on&searchtype=stemming&text=sudden&service=english2spanish> suddenly I insert one row (*) with the arg1 and arg2 . So ..., there are something that I receive back ?? Some pointer, something? There are any way to know which number receive my row ? Thank you, Gustavo (*) This process can be multi-thread. In my case I use the libraries with the wxWidget project with the class wxDbTable.
In PostgreSQL 8 and up: SELECT lastval(); gustavo halperin wrote: > Hello > > I have a question, if I have a table with a SEQUENCE primary key, that > obviously, I doesn't give in each new row inserted. For example if the > table locks: > CREATE SEQUENCE id_seq; > CREATE TABLE table ( id integer DEFAULT > nextval('id_seq') CONSTRAINT table_id PRIMARY KEY, > arg1 integer, > arg2 integer > ) > > How can I know which id receive each new row. I mean, > <http://ultralingua.com/onlinedictionary/index.html?action=define&ignoreaccents=on&wholewords=on&searchtype=stemming&text=sudden&service=english2spanish> > suddenly I insert one row (*) with the arg1 and arg2 . So ..., there > are something that I receive back ?? Some pointer, something? There > are any way to know which number receive my row ? > > Thank you, > Gustavo > > (*) This process can be multi-thread. In my case I use the libraries > with the wxWidget project with the class wxDbTable. > > ---------------------------(end of broadcast)--------------------------- > TIP 9: In versions below 8.0, the planner will ignore your desire to > choose an index scan if your joining column's datatypes do not > match
John McCawley wrote: > In PostgreSQL 8 and up: > > SELECT lastval(); Actually it's better to use currval. See http://people.planetpostgresql.org/xzilla/index.php?/archives/169-Is-lastval-evil.html -- Postgresql & php tutorials http://www.designmagick.com/
Chris <dmagick@gmail.com> writes: > Actually it's better to use currval. Right. Also, in 8.2 and up there's INSERT RETURNING, which is far more flexible --- for instance it could pull back an insertion timestamp. regards, tom lane