openGauss SQL语法 —ALTER SEQUENCE
创始人
2024-09-26 09:20:33
0

ALTER SEQUENCE

功能描述

修改一个现有的序列的参数。

注意事项

  • 序列的所有者或者被授予了序列ALTER权限的用户或者被授予了ALTER ANY SEQUENCE权限的用户才能执行ALTER SEQUENCE命令,系统管理员默认拥有该权限。但要修改序列的所有者,当前用户必须是该序列的所有者或者系统管理员,且该用户是新所有者角色的成员。
  • 当前版本仅支持修改步长、最大值、最小值、起始值、缓冲值、是否循环、重新开始、归属列和拥有者。若要修改其他参数,可以删除重建,并用Setval函数恢复当前值。
  • ALTER SEQUENCE MAXVALUE不支持在函数和存储过程中使用。
  • 修改序列的最大值后,会清空该序列在所有会话的cache。
  • 如果Sequence被创建时使用了LARGE标识,则ALTER时也需要使用LARGE标识。
  • ALTER SEQUENCE会阻塞nextval、setval、currval和lastval的调用。

语法格式

  • 修改序列属性

    ALTER [ LARGE ] SEQUENCE [ IF EXISTS ] name [ INCREMENT [ BY ] increment ]     [ MINVALUE minvalue | NO MINVALUE | NOMINVALUE ] [MAXVALUE maxvalue | NO MAXVALUE | NOMAXVALUE]     [ START [ WITH ] start ] [ CACHE cache ] [ [ NO ] CYCLE | NOCYCLE ] [ RESTART [ WITH ] restart ]      [ OWNED BY { table_name.column_name | NONE } ] ; 
  • 修改序列的拥有者

    ALTER SEQUENCE [ IF EXISTS ] name OWNER TO new_owner; 

参数说明

  • name

    将要修改的序列名称。

  • IF EXISTS

    当序列不存在时使用该选项不会出现错误消息,仅有一个通知。

  • INCREMENT

    指定序列的步长。

  • MINVALUE minvalue | NO MINVALUE| NOMINVALUE

    指定序列的最小值。如果没有声明minvalue或者声明了NO MINVALUE,则递增序列的缺省值为1,递减序列的缺省值为-263+1(Large序列为-2127+1)。NOMINVALUE等价于NO MINVALUE

  • MAXVALUE maxvalue | NO MAXVALUE| NOMAXVALUE

    指定序列的最大值。如果没有声明maxvalue或者声明了NO MAXVALUE,则递增序列的缺省值为263-1(Large序列为2127-1),递减序列的缺省值为-1。NOMAXVALUE等价于NO MAXVALUE

  • START

    指定序列的起始值。

  • CACHE

    为了快速访问,而在内存中预先存储序列号的个数。如果没有指定,将保持旧的缓冲值。

  • CYCLE

    用于使序列达到maxvalue或者minvalue后可循环并继续下去。

    如果声明了NO CYCLE,则在序列达到其最大值后任何对nextval的调用都会返回一个错误。

    NOCYCLE的作用等价于NO CYCLE。

    若修改序列为CYCLE,则不能保证序列的唯一性。

  • RESTART

    用于更改序列的当前值,指定的当前值将作为下次调用nextval的结果返回。缺省值为序列的起始值。

  • OWNED BY

    将序列和一个表的指定字段进行关联。这样,在删除那个字段或其所在表的时候会自动删除已关联的序列。

    如果序列已经和表有关联后,使用这个选项后新的关联关系会覆盖旧的关联。

    关联的表和序列的所有者必须是同一个用户,并且在同一个模式中。

    使用OWNED BY NONE将删除任何已经存在的关联。

  • new_owner

    序列新所有者的用户名。用户要修改序列的所有者,必须是新角色的直接或者间接成员,并且那个角色必须有序列所在模式上的CREATE权限。

示例

--创建一个名为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;  --修改序列步长为2 openGauss=# ALTER SEQUENCE serial INCREMENT 2;  --修改序列最小值为90 openGauss=# ALTER SEQUENCE serial MINVALUE 90;  --修改序列最大值为200 openGauss=# ALTER SEQUENCE serial MAXVALUE 200;  --修改序列起始值为90 openGauss=# ALTER SEQUENCE serial START 90;  --修改序列缓冲值为10 openGauss=# ALTER SEQUENCE serial CACHE 10;  --修改序列循环 openGauss=# ALTER SEQUENCE serial CYCLE;  --修改序列从100重新开始 openGauss=# ALTER SEQUENCE serial RESTART 100;  --删除序列和表。 openGauss=# DROP SEQUENCE serial cascade; openGauss=# DROP TABLE T1; 

相关链接

CREATE SEQUENCE,DROP SEQUENCE

相关内容

热门资讯

绝活儿辅助!广西老友玩老是输怎... 绝活儿辅助!广西老友玩老是输怎么办(辅助挂)都是真的有辅助app(讲解有挂)在进入广西老友玩老是输怎...
法门辅助!福建13水插件(辅助... 法门辅助!福建13水插件(辅助挂)一贯是有辅助技巧(有挂技术)1、许多玩家不知道福建13水插件辅助怎...
办法辅助!潮友会app下载官方... 办法辅助!潮友会app下载官方辅助器(辅助挂)真是真的是有辅助app(有挂教程)该软件可以轻松地帮助...
妙招辅助!邯郸胡乐挂辅助(辅助... 妙招辅助!邯郸胡乐挂辅助(辅助挂)好像存在有辅助插件(有挂方略)1、上手简单,内置详细流程视频教学,...
教程书辅助!乐酷辅助(辅助挂)... 教程书辅助!乐酷辅助(辅助挂)其实存在有辅助脚本(有挂细节)乐酷辅助能透视中分为三种模型:乐酷辅助模...
学习辅助!决战卡五星辅助(辅助... 学习辅助!决战卡五星辅助(辅助挂)本来真的是有辅助软件(有人有挂)学习辅助!决战卡五星辅助(辅助挂)...
绝活辅助!边锋嘉兴麻将辅助器(... 绝活辅助!边锋嘉兴麻将辅助器(辅助挂)真是真的有辅助神器(新版有挂)1、边锋嘉兴麻将辅助器公共底牌简...
举措辅助!枫叶辅助器(辅助挂)... 举措辅助!枫叶辅助器(辅助挂)本来存在有辅助技巧(竟然有挂)1、下载好枫叶辅助器正确养号方法之后点击...
讲义辅助!点我达辅助(辅助挂)... 讲义辅助!点我达辅助(辅助挂)一直存在有辅助技巧(有人有挂)1、点我达辅助辅助器安装包、点我达辅助辅...
模块辅助!威信茶馆有挂的吗(辅... 模块辅助!威信茶馆有挂的吗(辅助挂)一直真的是有辅助脚本(揭秘有挂)1、玩家可以在威信茶馆有挂的吗线...