VastbaseE100

基于开源技术的HTAP数据库管理系统。性能优异,稳定可靠,提供诸多专属领域特性。

Menu

ALTER SEQUENCE

ALTER SEQUENCE - 更改序列生成器的定义

语法格式

ALTER SEQUENCE [ IF EXISTS ] name
    [ AS data_type ]
    [ INCREMENT [ BY ] increment ]
    [ MINVALUE minvalue | NO MINVALUE ] [ MAXVALUE maxvalue | NO MAXVALUE ]
    [ START [ WITH ] start ]
    [ RESTART [ [ WITH ] restart ] ]
    [ CACHE cache ] [ [ NO ] CYCLE ]
    [ OWNED BY { table_name.column_name | NONE } ]
ALTER SEQUENCE [ IF EXISTS ] name OWNER TO { new_owner | CURRENT_USER | SESSION_USER }
ALTER SEQUENCE [ IF EXISTS ] name RENAME TO new_name
ALTER SEQUENCE [ IF EXISTS ] name SET SCHEMA new_schema

说明

ALTER SEQUENCE 更改现有序列生成器的参数说明。 ALTER SEQUENCE 命令中未特别设置的任何参数说明都保留其先前的设置。

您必须拥有序列才能使用 ALTER SEQUENCE 。要更改序列的架构,您还必须对新架构具有 CREATE 权限。要更改所有者,您还必须是新拥有角色的直接或间接成员,并且该角色必须对序列的架构具有 CREATE 特权。 (这些限制强制要求更改所有者不会通过删除和重新创建序列来执行任何操作。但是,超级用户无论如何都可以更改任何序列的所有权。)

参数说明

  • name

    要更改的序列的名称(可选择模式限定)。

  • IF EXISTS

    如果序列不存在,请不要抛出错误。在这种情况下发出通知。

  • data_type

    可选子句 AS data_type 更改序列的数据类型。有效类型为 smallint , integer 和 bigint 。 当且仅当先前的最小值和最大值是旧数据类型的最小值或最大值时(换句话说,如果序列是使用 NO MINVALUE 或 NO MAXVALUE 创建的),更改数据类型会自动更改序列的最小值和最大值,隐式或明确地)。否则,将保留最小值和最大值,除非新值作为同一命令的一部分给出。如果最小值和最大值不适合新数据类型,则会生成错误。

  • increment

    子句 INCREMENT BY increment 是可选的。正值将产生递增序列,负值将产生递减序列。如果未指定,将保留旧的增量值。

  • minvalue

  • NO MINVALUE

    可选子句 MINVALUE minvalue 确定序列可以生成的最小值。如果指定了 NO MINVALUE ,则将分别使用默认值1和升序和降序序列的数据类型的最小值。如果未指定任何选项,则将保持当前最小值。

  • maxvalue

  • NO MAXVALUE

    可选子句 MAXVALUE maxvalue 确定序列的最大值。如果指定 NO MAXVALUE ,则将分别使用数据类型的最大值的默认值和升序和降序序列的默认值-1。如果两个选项均未指定,则将保留当前最大值。

  • start

    可选子句 START WITH start 更改记录的序列起始值。这对当前序列值没有影响;它只是设置future ALTER SEQUENCE RESTART 命令将使用的值。

  • restart

    可选子句 RESTART [ WITH restart ] 更改序列的当前值。这类似于使用 is_called = false 调用 setval 函数:下一次调用 nextval 将返回指定的值。写入没有 restart 值的 RESTART 相当于提供 CREATE SEQUENCE 记录的起始值或 ALTER SEQUENCE START WITH 最后设置的起始值。 与 setval 调用相反,序列上的 RESTART 操作是事务性的,并阻止并发事务从同一序列中获取数字。如果这不是所需的操作模式,则应使用 setval 。

  • cache

    子句 CACHE cache 使序列号能够预先分配并存储在内存中,以便更快地访问。最小值为1(一次只能生成一个值,即没有缓存)。如果未指定,将保留旧的缓存值。

  • CYCLE

    可选的 CYCLE 关键字可用于使序列在分别通过升序或降序到达 maxvalue 或 minvalue 时回绕。如果限制是到达时,生成的下一个数字将分别为 minvalue 或 maxvalue 。

  • NO CYCLE

    如果指定了可选的 NO CYCLE 关键字,则在序列达到其最大值后对 nextval 的任何调用都将返回错误。如果既未指定 CYCLE 或 NO CYCLE ,则将保留旧的循环行为。

  • OWNED BY table_name . column_name

  • OWNED BY NONE

    OWNED BY选项使序列与特定的表列相关联,这样如果删除该列(或其整个表),序列也将自动删除。如果指定,则此关联将替换先前为序列指定的任何关联。指定的表必须具有相同的所有者,并且与序列位于相同的模式中。指定 OWNED BY NONE 将删除任何现有关联,使序列”独立”。

  • new_owner

    序列的新所有者的用户名。

  • new_name

    序列的新名称。

  • new_schema

    序列的新架构。

注意事项

ALTER SEQUENCE 不会立即影响 nextval 导致后端(除了当前的后端)具有预分配(缓存)序列值。在注意到更改的序列生成参数说明之前,它们将使用所有缓存的值。当前的后端将立即受到影响。

ALTER SEQUENCE 不会影响序列的 currval 状态。

ALTER SEQUENCE 阻止并发 nextval , currval , lastval 和 setval 次呼叫。

由于历史原因, ALTER TABLE 也可以与序列一起使用;但是序列允许的 ALTER TABLE 的唯一变体等同于上面显示的形式。

示例

在105处重新启动名为 serial 的序列:

ALTER SEQUENCE serial RESTART WITH 105;