ALTER SEQUENCE
通过以下两种方式更改命名序列:
-
设置控制序列行为的参数,例如,序列起始值以及其最小值和最大值的范围。这些更改仅在您启动新的数据库会话时生效。
-
设置序列名称、架构或所有权。这些更改会立即生效。
语法
更改序列行为:
ALTER SEQUENCE [[database.]schema.]sequence
[ INCREMENT [ BY ] integer ]
[ MINVALUE integer | NO MINVALUE ]
[ MAXVALUE integer | NO MAXVALUE ]
[ RESTART [ WITH ] integer ]
[ CACHE integer | NO CACHE ]
[ CYCLE | NO CYCLE ]
更改序列名称、架构或所有权:
ALTER SEQUENCE [schema.]sequence-name {
RENAME TO seq-name
| SET SCHEMA schema-name]
| OWNER TO owner-name
}
参数
- 架构
数据库和架构。默认架构为
public
。如果指定一个数据库,它必须是当前数据库。如果未指定架构,系统将在默认架构中创建表。
- 序列
- 要更改的序列的名称。
-
INCREMENT [BY] integer
一个正整数或负整数,指定每次调用 NEXTVAL 时序列的增减数量,默认设置为 1。
注意
将此参数设置为 integer 时,可确保列值始终至少增加 integer。但是,列值的增量有时可能会超过 integer,但如果您还设置了NO CACHE
参数则除外。-
MINVALUE integer
NO MINVALUE
(默认值) - 修改序列可以生成的最小值。如果更改了此值且当前值超出了范围,增量大于零时当前值将更改为最小值,增量小于零时当前值将更改为最大值。
-
MAXVALUE integer
NO MAXVALUE
(默认值) - 修改序列的最大值。如果更改了此值且当前值超出了范围,增量大于零时当前值将更改为最小值,增量小于零时当前值将更改为最大值。
- RESTART [WITH] integer
- 将序列的当前值更改为 integer。下一次调用
NEXTVAL
将返回 integer。 CACHE
integerNO CACHE
(默认值)- 指定预先分配和存储在内存中的序列号数量,以提高访问速度。Vertica 为每个会话设置缓存,并将其分布到所有节点。默认情况下,序列缓存设置为 250,000。
有关详细信息,请参阅分发命名序列。
CYCLE
NO CYCLE
(默认值)- 指定序列是否可以在达到其最小值或最大值时回绕:
-
CYCLE
:序列按如下方式进行回绕:-
当递增序列达到其上限时,会被重置为其最小值。
-
当递减序列达到其下限时,会被重置为其最大值。
-
-
NO CYCLE
(默认值):在序列达到其最大值或最小值后,调用 NEXTVAL 会返回错误。
-
-
RENAME TO seq‑name
- 重命名当前架构中的序列,其中 seq‑name 符合标识符中描述的约定。 同一架构中的序列、表、投影、视图和模型中也必须是唯一的。
-
SET SCHEMA schema‑name
- 将序列移至架构 schema-name。
-
OWNER TO owner‑name
- 将当前序列所有者重新分配给指定所有者。
特权
非超级用户:对架构的 USAGE 权限,为以下之一:
-
序列所有者
-
对序列的 ALTER 权限
对于某些操作,非超级用户必须具备以下架构权限:
示例
请参阅更改序列。
另请参阅
CREATE SEQUENCE