Обсуждение: Serial - last value
Hi there
a little basic question here
I usually use something like this in stored function
to get the last value of a serial type column
What i'm asking is,
if many people run the same stored function at the same time
will they get the last_value they should really get
or is there another way to code that can ensure they really get the right value
Thank you
Regards
Hendra
a little basic question here
I usually use something like this in stored function
to get the last value of a serial type column
select last_value into ret from id_sequence
return ret
What i'm asking is,
if many people run the same stored function at the same time
will they get the last_value they should really get
or is there another way to code that can ensure they really get the right value
Thank you
Regards
Hendra
hendra kusuma wrote: > Hi there > a little basic question here > > I usually use something like this in stored function > to get the last value of a serial type column > > select last_value into ret from id_sequence >> return ret > > What i'm asking is, > if many people run the same stored function at the same time > will they get the last_value they should really get > or is there another way to code that can ensure they really get the right > value You should use the functional interface: SELECT currval('my_sequence'). That guarantees you the right value for your current session. This only works if you've called nextval('my_sequence') at some point in the current session (although that could be automatic for a column of type SERIAL). -- Richard Huxton Archonet Ltd
hendra kusuma wrote: > > Let me get this clear > it should looks like this? > > create function something() returns integer as $$ > declare > ret integer; > begin > -- just assume something table has a serial column as primary key > insert into something values ('a value'); > select currval('something_sequence') into ret; > return ret; > end > > $$ language 'plpgsql'; That should work fine, although for that particular case with recent versions you could just use: INSERT INTO some_table (id, mytext) VALUES (DEFAULT, 'a value') RETURNING id; -- Richard Huxton Archonet Ltd