SAP HANA Tutorial: Create Sequence

What is Sequence?

A sequence is a database object that automatically generates the incremented list of numeric values according to rule as specified in sequence specification.

For example to insert employee number automatically in column (EMPLOYEE_NO) of Table, when a new record is inserted in the table, then we use sequence.

Sequence values are generated in Ascending or Descending order.

Sequences are not associated with tables; they are used by the application. There are two values in sequence –

  • CURRVAL – Provide Current value of Sequence.
  • NEXTVAL – Provide Next value of sequence.

SYNTAX

CREATE SEQUENCE <sequence_name> [<sequence_parameter_list>] [RESET BY <subquery>]

SYNTAX ELEMENTS

ELEMENTS DESCRIPTION
<sequence_name> It is the name of the sequence.
[<sequence_parameter_list>] It specifies one or more sequence parameters.
START WITH <start_value> It describes the starting sequence value.
INCREMENT BY <increment_value> This specifies the value to be incremented from the last value assigned for each time when new sequence value generated. The default is 1.
MAXVALUE <max_value> This specifies maximum value ,which can be generated by the sequence. <max_value> can be between -4611686018427387903 and 4611686018427387902.
NO MAXVALUE When the NO MAXVALUE is specified, for an ascending sequence, the maximum value will be 4611686018427387903 and the minimum value for a descending sequence will be -1.
MINVALUE <min_value> / NO MINVALUE It specifies the minimum value that a sequence can generate. <min_value> can be between -4611686018427387904 and 4611686018427387902. When the NO MINVALUE is used, the minimum value for an ascending sequence is 1
CYCLE CYCLE directive specifies that sequence number will be restarted after it reaches its maximum or minimum value.
NO CYCLE Default option.NO CYCLE directive specifies that sequence number will not be restarted after it reaches its maximum or minimum value.
CACHE <cache_size> / The cache size specifies which range of sequence numbers will be cached in a node. <cache_size> must be unsigned integer.
NO CACHE Default option. NO CACHE directive specifies that the sequence number will not be cached in a node.
RESET BY <subquery> It specifies that during the restart of the database, the database automatically executes the <subquery> and the sequence value is restarted with the returned value.

Example –

We will create a sequence with named DHK_SCHEMA.EMP_NO, which will create incremented value of the sequence by +1 each time, when the sequence is used.

Sequence Script –

CREATE SEQUENCE DHK_SCHEMA.EMP_NO START WITH 100 INCREMENT BY 1.

Here we will use object “sequence” in below example to increment the value of employee no by +1 each time the select query is executed. In the query, the “nextval” can be used for serial number generation or same type of requirement.

Use of Sequence –

SELECT DHK_SCHEMA.EMP_NO.nextval FROM DUMMY;

OUTPUT – 100,101,102………So on every execution of above select query.