Search Postgresql Archives

Re: Restart increment to 0 each year = re-invent the se

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> You can set a sequence 'nextval' with the following statement :
>
> SELECT setval('XXX_YYY_seq',0);

The statement above will not work (... at least, it will not work in
PostgreSQL 7.3.1 -- I don't know if the new version has changed this
behavior...but I doubt it). You have to use something like

CREATE OR REPLACE FUNCTION public.set_sequence(name, int4)
  RETURNS int4 AS
'
DECLARE
  l_sequence_name ALIAS FOR $1;
  l_last_value ALIAS FOR $2;
BEGIN
  IF  l_last_value = 0 THEN
    PERFORM setval(l_sequence_name,1, False);
  ELSE
    PERFORM setval(l_sequence_name,l_last_value);
  END IF;
RETURN 0;
END;'
  LANGUAGE 'plpgsql' VOLATILE;


>
> XXX is the table name.
> YYY is the name of the field containing the 'serial' value.
>
> The next value inserted in the table will then have a (serial) value of
> '0' or '1', I am not entirely sure which (I think '1').
> Alexander Priem.

--Berend Tober




---------------------------(end of broadcast)---------------------------
TIP 8: explain analyze is your friend

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux