SAP HANA 教程:创建序列

什么是序列?

序列是一个数据库对象,它根据序列规范中指定的规则自动生成递增的数字列表。

例如,当新记录插入表中时,要自动在表的列(EMPLOYEE_NO)中插入员工编号,我们就可以使用序列。

序列值按升序或降序生成。

序列不与表关联;它们由应用程序使用。序列中有两个值——

  • CURRVAL – 提供序列的当前值。
  • NEXTVAL – 提供序列的下一个值。

语法

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

语法元素

元素 描述
<序列名> 它是序列的名称。
[<sequence_parameter_list>] 它指定一个或多个序列参数。
START WITH <start_value> 它描述序列的起始值。
INCREMENT BY <increment_value> 这指定了每次生成新序列值时,从上次分配的值递增的值。默认值为1。
MAXVALUE <max_value> 这指定了序列可以生成的最大值。可以在-4611686018427387903和4611686018427387902之间。
NO MAXVALUE 当指定NO MAXVALUE时,对于升序序列,最大值为4611686018427387903;对于降序序列,最小值为-1。
MINVALUE <min_value> / NO MINVALUE 它指定序列可以生成的最小值。可以在-4611686018427387904和4611686018427387902之间。当使用NO MINVALUE时,升序序列的最小值为1。
CYCLE CYCLE指令指定序列号在达到其最大或最小值后将重新开始。
NO CYCLE 默认选项。NO CYCLE指令指定序列号在达到其最大或最小值后不会重新开始。
CACHE <cache_size> / 缓存大小指定将缓存到节点中的序列号范围。必须是无符号整数。
NO CACHE 默认选项。NO CACHE指令指定序列号将不会缓存到节点中。
RESET BY <subquery> 它指定在数据库重启期间,数据库自动执行,并且序列值将以返回的值重新开始。

示例 –

我们将创建一个名为DHK_SCHEMA.EMP_NO的序列,每次使用该序列时,它将按+1递增序列值。

序列脚本 –

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

在此示例中,我们将使用对象“sequence”来使员工编号的值在每次执行SELECT查询时递增+1。在查询中,“nextval”可用于生成序列号或类似需求。

序列的使用 –

SELECT DHK_SCHEMA.EMP_NO.nextval FROM DUMMY;

输出 – 100,101,102……每次执行上述SELECT查询时依此类推。