暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

华为GaussDB T 创建和修改Sequence

原创 章芋文 2019-09-22
1642

创建序列

CREATE   SEQUENCE
    功能描述
    向当前数据库中增加一个新的序列生成器。
    当前用户为该生成器的所有者。
    注意事项
      序列是基于bigint运算的,因此其范围不能超过八字节的整数范围(-263~263-1)。若指定的值超出BIGINT的范围,系统将使用bigint的上边界或下边界替换。
    序列对象不适合用于多会话并发的场合,因为会引起序列不能按顺序生成的问题。
    执行该语句的用户需要有CREATE SEQUENCE、CREATE ANY SEQUENCE或者ALL   PRIVILEGES的系统权限语法格式。
    在创建序列后,可以使用NEXTVAL,CURRVAL函数获取序列的值,普通用户不可以创建系统用户对象。
    语法格式

    CREATE SEQUENCE [ schema_name. ]sequence_name
     
        [   INCREMENT BY bigint 
     
            | START WITH bigint 
     
            | { MAXVALUE bigint | NOMAXVALUE }
     
          | { MINVALUE bigint | NOMINVALUE }
     
            | { CYCLE | NOCYCLE }
     
          | { CACHE bigint | NOCACHE }
     
            | { ORDER | NOORDER } 
     
        ] [ ... ]


    参数说明
    [ schema_name. ]
    用户名。不指定时默认是当前登录用户。
    sequence_name
    将要创建的序列名。可以用模式修饰。
    INCREMENT BY bigint
    用于指定序列的步长。
    非零整数。缺省值是1。
    increment为正数时,将生成一个递增的序列。
    increment为负数时,将生成一个递减的序列。
    START WITH bigint
    用于指定序列的起点。
    start:序列的起点。
    递增序列的缺省起点为minvalue。
    递减序列的缺省起点为maxvalue。
    MAXVALUE bigint | NOMAXVALUE
    MAXVALUE声明序列的最大值。
    NOMAXVALUE声明序列无最大值。
    如果没有声明该子句或者声明了NOMAXVALUE,则使用默认值:
    递增序列的缺省最大值为 263-1。
    递减序列的缺省最大值为-1。
    MINVALUE bigint | NOMINVALUE
    MINVALUE声明序列的最小值。
    NOMINVALUE声明序列无最小值。
    如果没有声明该子句或者声明为NOMINVALUE,则使用默认值:
    递增序列的缺省最小值为1。
    递减序列的缺省最小值为-263+1。
    CYCLE | NOCYCLE
    CYCLE,用于声明序列达到最大或最小值时可循环,即:
    NOCYCLE,用于声明当序列达到极限值时,取下一个值会出错。
    默认为NOCYCLE。
    递增序列到达maxvalue时,生成的下一个数据是minvalue。
    递减序列到达minvalue时,生成的下一个数据是maxvalue。
    CACHE bigint | NOCACHE
    CACHE bigint表示为快速访问而在内存里预先存储序列号的个数,默认值是20,最小值是1。此处在存在约束:如果向上取整((MAXVALUE - MINVALUE )/ INCREMENT )   < CACHE bigint,则会报错:
      ERR_SEQ_INVALID:number to CACHE must be less than one cycle
    NOCACHE表示不设置缓存。
    ORDER | NOORDER
    ORDER:保证序列号按请求顺序产生。如果想以序列号作为timestamp(时间戳)类型的话,可以采用该选项。对于将序列用于生成主键来说,约定顺序通常并不重要。
    NOORDER:NOORDER跟ORDER相对应,并不按照请求的顺序进行生成。默认是NOORDER。
    示例
    创建序列seq_auto_extend。

--删除序列seq_auto_extend。
DROP SEQUENCE IF EXISTS seq_auto_extend;

--创建序列seq_auto_extend,序列起点为10,步长为2,最大值为200,序列到达最大值时可循环。
CREATE SEQUENCE seq_auto_extend START WITH 10 MAXVALUE 200 INCREMENT BY 2 CYCLE;


        

修改序列

ALTER   SEQUENCE
    功能描述
    修改序列属性。
    注意事项
    修改当前用户的序列属性,不需要授予额外的权限。
    修改其他用户的序列属性,需要被授予ALTER ANY SEQUENCE系统权限,普通用户不可以修改系统用户对象。
    数据库重启回滚期间不支持该操作。
    语法格式

    ALTER SEQUENCE [ schema_name. ]sequence_name
        {   INCREMENT BY bigint
            | { MAXVALUE bigint | NOMAXVALUE }
          | { MINVALUE bigint | NOMINVALUE }
            | { CYCLE | NOCYCLE }
            | { CACHE bigint | NOCACHE }
            | { ORDER | NOORDER }
        } [ ... ]

    参数说明
    [ schema_name. ]
    用户名。不指定时默认是当前登录用户。
    sequence_name
    将要修改的序列名。可以用模式修饰。
    INCREMENT BY bigint
    用于指定序列的步长。
    非零整数。缺省值是1。
    increment为正数时,将生成一个递增的序列。
    increment为负数时,将生成一个递减的序列。
    MAXVALUE bigint | NOMAXVALUE
    MAXVALUE声明序列的最大值。
    NOMAXVALUE声明序列无最大值。
    如果没有声明该子句或者声明了NO MAXVALUE,则使用默认值:
    递增序列的缺省为 263-1。
    递减序列的缺省为-1。
    MINVALUE bigint | NOMINVALUE
    MINVALUE声明序列的最小值。
    NOMINVALUE声明序列无最小值。
    如果没有声明该子句或者声明为NO MINVALUE,则使用默认值:
    递增序列的缺省为1。
    递减序列的缺省为-263+1。
    CYCLE | NOCYCLE
    CYCLE,用于声明序列达到最大或最小值时可循环,即:
    NOCYCLE,用于声明当序列达到极限值时,取下一个值会出错。
    默认为NOCYCLE。
    递增序列到达maxvalue时,生成的下一个数据是minvalue。
    递减序列到达minvalue时,生成的下一个数据是maxvalue。
    CACHE bigint | NOCACHE
    CACHE   bigint表示为快速访问而在内存里预先存储序列号的个数,最小值(即缺省值)是1,表示一次只能生成一个值,即没有缓存。NOCACHE表示不设置缓存。
    ORDER | NOORDER
      ORDER:保证序列号按请求顺序产生。如果想以序列号作为timestamp(时间戳)类型的话,可以采用该选项。对于将序列用于生成主键来说,约定顺序通常并不重要。
    NOORDER:NOORDER跟ORDER相对应,并不按照请求的顺序进行生成。
    示例
    修改序列seq_auto_extend。
 

--删除序列seq_auto_extend。
DROP SEQUENCE IF EXISTS seq_auto_extend;

--创建序列seq_auto_extend,序列起点为10,步长为2,最大值为200,序列到达最大值时可循环。
CREATE SEQUENCE seq_auto_extend START WITH 10 MAXVALUE 200 INCREMENT BY 2 CYCLE;

--修改步长为4,最大值为400。
ALTER SEQUENCE seq_auto_extend MAXVALUE 400 INCREMENT BY 4 CYCLE;
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论