PostgreSQL setval() Function
The PostgreSQL setval() function resets the current value of the specified sequence and returns the specified value.
setval() Syntax
Here is the syntax of the PostgreSQL setval() function:
setval(sequence_name TEXT, current_value BIGINT) -> BIGINT
or
setval(sequence_name TEXT, current_value BIGINT, is_called BOOLEAN) -> BIGINT
Parameters
sequence_name-
Required. The name of the sequence.
current_value-
Required. The current value specified for the sequence.
is_called-
Optional. Whether to recall the specified current value. If
true, the current value of the setting has been used; iffalse, the current value of the setting has not been used. The default value istrue.
Return value
The PostgreSQL setval() function returns the value of the second parameter, that is the parameter current_value.
setval() Examples
First, let’s create a simple sequence generator named my_sequence using the CREATE SEQUENCE statement:
DROP SEQUENCE IF EXISTS my_sequence;
CREATE SEQUENCE my_sequence START 100;
Here, we create a sequence generator named my_sequence with a starting value of 100.
Then, let’s use the PostgreSQL nextval() function to advance my_sequence to its next value and return the latest value:
SELECT nextval('my_sequence');
nextval
---------
100Then, let’s set the current value of my_sequence to 200 using the following statement,
SELECT setval('my_sequence', 200);
setval
--------
200Let’s use the PostgreSQL nextval() function to get the next value of my_sequence:
SELECT nextval('my_sequence');
nextval
---------
201Here, since we used the setval() function set the current value of the sequence to 200, so the nextval() function returns 201.
Of course, we could also make the sequence my_sequence start at 200 instead of 201, using the following statement:
SELECT setval('my_sequence', 200, false);
setval
--------
200Let’s use the PostgreSQL nextval() function to get the next value of my_sequence:
SELECT nextval('my_sequence');
nextval
---------
200Now, the start value of my_sequence is 200, not 201.