CREATE SEQUENCE

定义新的命名序列号生成器对象。与 AUTO_INCREMENT 和 IDENTITY 序列一样,命名序列允许您设置主键列的默认值。序列保证了唯一性,并避免了约束强制执行问题及开销。

有关序列类型及其用法的详细信息,请参阅序列

语法

CREATE SEQUENCE [ IF NOT EXISTS ] [[database.]schema.]sequence
   [ INCREMENT [ BY ] integer ]
   [ MINVALUE integer | NO MINVALUE ]
   [ MAXVALUE maxvalue | NO MAXVALUE ]
   [ START [ WITH ] integer ]
   [ CACHE integer | NO CACHE ]
   [ CYCLE | NO CYCLE ]

参数

IF NOT EXISTS

如果存在同名对象,请不要创建它并继续。如果忽略此选项且对象存在,Vertica 将生成 ROLLBACK 错误消息。在上述两种情况下,如果对象已经存在,则不会创建它。

IF NOT EXISTS 子句适用于以下 SQL 脚本:可在某个对象不存在时创建该对象。

请参阅 ON_ERROR_STOP 了解相关信息。

[database.]schema

数据库和架构。默认架构为 public。如果指定一个数据库,它必须是当前数据库。

序列
标识要创建的序列,其中 sequence 符合标识符中描述的约定。 同一架构中的序列、表、投影、视图和模型中也必须是唯一的。
INCREMENT [BY] integer

一个正整数或负整数,指定每次调用 NEXTVAL 时序列的增减数量,默认设置为 1。

MINVALUE integer | NO MINVALUE
确定序列可生成的最小值。如果忽略此子句或指定 NO MINVALUE(默认值),则将使用默认值:升序序列和降序序列分别为 1 和 ‑263‑1。
MAXVALUE integer | NO MAXVALUE
确定序列的最大值。如果忽略此子句或指定 NO MAXVALUE(默认值),则将使用默认值:升序序列和降序序列分别为 263‑1 和 ‑1。
START [WITH] integer
将序列起始值设置为 integer。下一次调用 NEXTVAL 时将返回 integer。如果忽略此子句,则升序序列的起始值将设置为 MINVALUE,降序序列的起始值将设置为 MAXVALUE
CACHE integer | NO CACHE
指定是否在每个节点上缓存唯一的序列号,以便提高访问速度。 CACHE 需要一个整数实参,如下所示:
  • >1 指定每个节点在每个会话中缓存的唯一编号的数量。

  • 0 或 1 指定禁用缓存(等同于 NO CACHE)。

如果忽略此子句,序列缓存将设置为 250,000。

有关命名序列缓存的详细信息,请参阅分发命名序列

CYCLE | NO CYCLE
指定序列是否可以在达到其最小值或最大值时回绕:
  • CYCLE:序列按如下方式进行回绕:

    • 当递增序列达到其上限时,会被重置为其最小值。

    • 当递减序列达到其下限时,会被重置为其最大值。

  • NO CYCLE (默认值):在序列达到其最大值或最小值后,调用 NEXTVAL 会返回错误。

特权

非超级用户:对架构的 CREATE 权限

示例

请参阅创建和使用命名序列

另请参阅