Re: Resetting a sequence's last value... - Mailing list pgsql-general

From Sean Chittenden
Subject Re: Resetting a sequence's last value...
Date
Msg-id 20030427210053.GO35599@perrin.int.nxad.com
Whole thread Raw
In response to Re: Resetting a sequence's last value...  (Bruno Wolff III <bruno@wolff.to>)
List pgsql-general
> > Thoughts?  I got a post offlist suggesting writing a C function,
> > but that's pretty dependent on the backend and would have to be
> > recompiled from version to version, something I'm not too wild
> > about.  -sc
>
> What would seem logical to me is using the iscalled parameter to
> setval to determine this. If you call setval('seq', 1, false), I
> think it would be reasonable for the currval('seq') to be undefined
> until nextval('seq') or setval with iscalled=true is called.

setval:
    Reset the sequence object's counter value. The two-parameter
    form sets the sequence's last_value field to the specified
    value and sets its is_called field to true, meaning that the
    next nextval will advance the sequence before returning a
    value. In the three-parameter form, is_called may be set
    either true or false. If it's set to false, the next nextval
    will return exactly the specified value, and sequence
    advancement commences with the following nextval.

That gives me an idea for the API, however.  If the 2nd parameter is
NULL, it could reset is_called without changing the value.  In all
situations, I must maintain that a transaction ID is unique to the
entire database and must always be the case.

SELECT setval('txn_id_seq', NULL);

Hrm...  I may look into this later this week if something interesting
doesn't pop up or someone else doesn't beat me to the punch.  -sc

--
Sean Chittenden


pgsql-general by date:

Previous
From: Tom Lane
Date:
Subject: Re: Resetting a sequence's last value...
Next
From: "Bruno Baguette"
Date:
Subject: Re: Cannot use the queries buffer of psql... :-(