更新时间:2023-10-23 GMT+08:00
ALTER SEQUENCE
功能描述
修改一个现有的序列的参数。
注意事项
- 只有序列的所有者或者被授予了序列ALTER权限的用户才能执行ALTER SEQUENCE命令,系统管理员默认拥有该权限。但要修改序列的所有者,当前用户必须是该序列的所有者或者系统管理员,且该用户是新所有者角色的成员。
- 当前版本仅支持修改拥有者、归属列和最大值。若要修改其他参数,可以删除重建,并用Setval函数恢复当前值。
- ALTER SEQUENCE MAXVALUE不支持在事务、函数和存储过程中使用。
- 修改序列的最大值后,会清空该序列在所有会话的cache。
- 如果Sequence被创建时使用了LARGE标识,则ALTER时也需要使用LARGE标识。
- ALTER SEQUENCE会阻塞nextval、setval、currval和lastval的调用。
语法格式
- 修改序列归属列
ALTER [ LARGE ] SEQUENCE [ IF EXISTS ] name [MAXVALUE maxvalue | NO MAXVALUE | NOMAXVALUE | CACHE cache] [ OWNED BY { table_name.column_name | NONE } ] ;
- 修改序列的拥有者
ALTER [ LARGE ] SEQUENCE [ IF EXISTS ] name OWNER TO new_owner;
参数说明
示例
--创建一个名为serial的递增序列,从101开始。 openGauss=# CREATE SEQUENCE serial START 101; --创建一个表,定义默认值。 openGauss=# CREATE TABLE T1(C1 bigint default nextval('serial')); --将序列serial的归属列变为T1.C1。 openGauss=# ALTER SEQUENCE serial OWNED BY T1.C1; --删除序列和表。 openGauss=# DROP SEQUENCE serial cascade; openGauss=# DROP TABLE T1;
父主题: SQL语法