9.17. Sequence Manipulation Functions (original) (raw)
nextval
( regclass
) → bigint
Advances the sequence object to its next value and returns that value. This is done atomically: even if multiple sessions execute nextval
concurrently, each will safely receive a distinct sequence value. If the sequence object has been created with default parameters, successive nextval
calls will return successive values beginning with 1. Other behaviors can be obtained by using appropriate parameters in the CREATE SEQUENCE command.
This function requires USAGE
or UPDATE
privilege on the sequence.
setval
( regclass
, bigint
[, boolean
] ) → bigint
Sets the sequence object's current value, and optionally its is_called
flag. 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. The value that will be reported by currval
is also set to the specified value. In the three-parameter form, is_called
can be set to either true
or false
. true
has the same effect as the two-parameter form. If it is set to false
, the next nextval
will return exactly the specified value, and sequence advancement commences with the following nextval
. Furthermore, the value reported by currval
is not changed in this case. For example,
SELECT setval('myseq', 42); Next nextval
will return 43
SELECT setval('myseq', 42, true); Same as above
SELECT setval('myseq', 42, false); Next nextval
will return 42
The result returned by setval
is just the value of its second argument.
This function requires UPDATE
privilege on the sequence.
currval
( regclass
) → bigint
Returns the value most recently obtained by nextval
for this sequence in the current session. (An error is reported if nextval
has never been called for this sequence in this session.) Because this is returning a session-local value, it gives a predictable answer whether or not other sessions have executed nextval
since the current session did.
This function requires USAGE
or SELECT
privilege on the sequence.
lastval
() → bigint
Returns the value most recently returned by nextval
in the current session. This function is identical to currval
, except that instead of taking the sequence name as an argument it refers to whichever sequence nextval
was most recently applied to in the current session. It is an error to call lastval
if nextval
has not yet been called in the current session.
This function requires USAGE
or SELECT
privilege on the last used sequence.