why not just use setval(), see docs for arguments. ---------- Original Message ----------- From: Philippe Ferreira <phil.f@xxxxxxxxxxxxxx> To: pgsql-general@xxxxxxxxxxxxxx Sent: Wed, 25 Jan 2006 22:11:11 +0100 Subject: Re: [GENERAL] My very first PL/pgSQL procedure... > Hi, > > The only solution I've found to get the same reliable result, but > without locking, is the dirty way (loops) : > --------------------------------------------------------------------------------------------------------------------- > CREATE OR REPLACE FUNCTION seq_min(sequence_name varchar, minval > integer) RETURNS VOID AS $$ > DECLARE > sequence_record RECORD; > BEGIN > -- Get the current sequence value : > FOR sequence_record IN EXECUTE 'SELECT last_value FROM ' || > sequence_name LOOP > NULL; > END LOOP; > -- Loop to bring the sequence to (at least) minval : > WHILE sequence_record.last_value < minval LOOP > -- Increment by 1 the sequence (and get the new value) : > FOR sequence_record IN EXECUTE 'SELECT nextval(''' || sequence_name > || ''') AS last_value' LOOP > NULL; > END LOOP; > END LOOP; > RETURN; > END; > $$ LANGUAGE plpgsql; > --------------------------------------------------------------------------------------------------------------------- > > It gives the result I expect (and it doesn't interfere with concurrent > uses of the sequence), but it is not very optimized ! > So, if someone have a better idea, I'm still open ! > > Thank you, > Philippe Ferreira. > > ---------------------------(end of broadcast)--------------------------- > TIP 1: if posting/reading through Usenet, please send an appropriate > subscribe-nomail command to majordomo@xxxxxxxxxxxxxx so that your > message can get through to the mailing list cleanly ------- End of Original Message -------