NEXT VALUE for sequence_name
You are viewing an old version of this article. View
the current version here.
Syntax
NEXT VALUE FOR sequence
or
NEXTVAL(sequence_name)
or in Oracle mode (SQL_MODE=ORACLE)
sequence_name.nextval
Contents
NEXT VALUE FOR is ANSI SQL syntax while NEXTVAL() is PostgreSQL syntax.
Description
Generate next value for a SEQUENCE.
- You can greatly speed up
NEXT VALUEby creating the sequence with theCACHEoption. If not, everyNEXT VALUEusage will cause changes in the storedSEQUENCEtable. - When using
NEXT VALUEthe value will be reserved at once and will not be reused, except if theSEQUENCEwas created withCYCLE. This means that when you are usingSEQUENCEs you have to expect gaps in the generated sequence numbers. - If one updates the
SEQUENCEwith SETVAL() or ALTER SEQUENCE ... RESTART,NEXT VALUE FORwill notice this and start from the next requested value. - FLUSH TABLES will close the sequence and the next sequence number generated will be according to what's stored in the
SEQUENCEobject. In effect, this will discard the cached values. - A server restart (or closing the current connection) also causes a drop of all cached values. The cached sequence numbers are reserved only for the current connection.
NEXT VALUErequires theINSERTprivilege.- You can also use
NEXT VALUE FOR sequencefor columnDEFAULT.
Once the sequence is complete, unless the sequence has been created with the CYCLE attribute (not the default), calling the function will result in Error 4084: Sequence has run out.
Examples
CREATE OR REPLACE SEQUENCE s MAXVALUE=2; SELECT NEXTVAL(s); +------------+ | NEXTVAL(s) | +------------+ | 1 | +------------+ SELECT NEXTVAL(s); +------------+ | NEXTVAL(s) | +------------+ | 2 | +------------+ SELECT NEXTVAL(s); ERROR 4084 (HY000): Sequence 'test.s' has run out ALTER SEQUENCE s MAXVALUE=2 CYCLE; SELECT NEXTVAL(s); +------------+ | NEXTVAL(s) | +------------+ | 1 | +------------+
See Also
- Sequence Overview
- CREATE SEQUENCE
- ALTER SEQUENCE
- PREVIOUS VALUE FOR
- SETVAL(). Set next value for the sequence.
- AUTO_INCREMENT
- Information Schema SEQUENCES Table
Comments
Comments loading...
Content reproduced on this site is the property of its respective owners,
and this content is not reviewed in advance by MariaDB. The views, information and opinions
expressed by this content do not necessarily represent those of MariaDB or any other party.