setval()
This page documents the preview version (v2.21). Preview includes features under active development and is for development and testing only. For production, use the stable version (v2024.1). To learn more, see Versioning.
Synopsis
Use the setval(sequence_name, value, is_called)
function to set and return the value for the specified sequence.
UPDATE
privilege on the sequence is required to call this function.
Calling the function with two parameters defaults is_called
to true
, meaning that the nextval
will advance the sequence prior to returning the value, and currval
will also return the specified value.
When called with is_called
set to false
, nextval
will return the specified value and the value reported by currval
will not be changed.
setval()
returns just the value of its second argument.
Semantics
sequence_name
Specify the name of the sequence.
value
Specify the value of the sequence.
is_called
Set is_called
to true
or false
.
Examples
Create a sequence
yugabyte=# CREATE SEQUENCE s;
CREATE SEQUENCE
Use setval
with is_called
set to true
:
yugabyte=# SELECT setval('s', 21);
yugabyte=# SELECT setval('s', 21, true); -- the same command as above
yugabyte=# SELECT nextval('s');
nextval
---------
22
(1 row)
Use setval
with is_called
set to false
:
yugabyte=# SELECT setval('s', 21, false);
yugabyte=# SELECT nextval('s');
nextval
---------
21
(1 row)
Note
setval
changes are immediately visible in other transactions and are not rolled back if the transaction is rolled back.