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

GBase8s ALTER SEQUENCE解析

wj2021 2021-12-23
512

使用 ALTER SEQUENCE 句修改序列对象的定义。该语句是 SQL ANSI/ISO 标准的扩展。

语法



用法

ALTER SEQUENCE 语句可以修改 syssequences 系统目录表中指定的序列对象的定义。

ALTER SEQUENCE 重新定义了现有的序列对象。它只影响随后生成的值(和序列高速缓存中任何 未使用的值)。您不能使用 ALTER SEQUENCE 语句重命名序列,也不能更改序列的所有者。

要修改一个序列的定义,您必须是其所有者或 DBA 或具有对该序列的 Alter 权限。只会修改您在 ALTER SEQUENCE 语句中显式指定的序列定义的元素。如果您做出矛盾的更改(例如同时指定 MAXVALUE 和 NOMAXVALUE,或同时指定 CYCLE 和 NOCYCLE 选项),则会发生错误。

示例

以下示例基于随后的序列对象和表:

CREATE SEQUENCE seq_2

    INCREMENT BY 1 START WITH 1

    MAXVALUE 30 MINVALUE 0

    NOCYCLE CACHE 10 ORDER;

CREATE TABLE tab1 (col1 int, col2 int);

INSERT INTO tab1 VALUES (0, 0);

INSERT INTO tab1 (col1, col2) VALUES (seq_2.NEXTVAL, seq_2.NEXTVAL)

SELECT * FROM tab1;

col1 col2

0 0

1 1

ALTER SEQUENCE seq_2

    RESTART WITH 5

    INCREMENT by 2

    MAXVALUE 300;

INSERT INTO tab1 (col1, col2) VALUES (seq_2.NEXTVAL, seq_2.NEXTVAL)

INSERT INTO tab1 (col1, col2) VALUES (seq_2.NEXTVAL, seq_2.NEXTVAL)

SELECT * FROM tab1;

col1 col2

0 0

1 1

5 5

7 7

 

INCREMENT BY 选项

使用 INCREMENT BY 选项指定一个序列中连续数字之间的新间隔。间隔(或 step 值)可以 INT8

范围内的一个正整数(对递增顺序)或负整数(对递减顺序) 。BY 关键字是可选的。

RESTART WITH 选项

使用 RESTART WITH 选项指定该序列的新的第一个数字。如果使用 ALTER SEQUENCE 语句指

定了 min max 值,则 restart 值必须是 INT8 范围内的整数,它大于等于 min 值(对于递增顺

序),或小于等于 max 值(对于递减顺序)。WITH 关键字是可选的。

当您使用 RESTART 选项修改序列时,restart 值存储在 syssequences 系统目录表中,直到

NEXTVAL 操作中第一次使用该序列对象。在此以后,该值就在系统目录中复位。使用 dbschema

用程序可以递增数据库中的序列对象,从而在生成的数字中产生间隔,您可能不希望这些数字在需

要序列化整数的应用程序中出现。

MAXVALUE NOMAXVALUE 选项

使用 MAXVALUE 选项指定序列中值的新的上限。最大值(或 max )必须是 INT8 范围内的整数,

它大于 sequence.CURRVAL restart (或者,如果未指定 restart ,则大于原 CREATE

SEQUENCE 语句中的 origin )。

使用 NOMAXVALUE 选项,以用新的缺省最大值(对递增顺序为 2e64;对递减顺序为 -1)替换

当前的限制值。

MINVALUE NOMINVALUE 选项

使用 MINVALUE 选项指定序列中值的新下限。最小值(或 min)必须是 INT8 范围内的整数,它

小于 sequence.CURRVAL restart (或者,如果未指定 restart ,则小于原 CREATE SEQUENCE

语句中的 origin )。

使用 NOMINVALUE 选项以用缺省值(对于递增顺序为 1;对于递减顺序为 -(2e64))替换当前下

限。

CYCLE NOCYCLE 选项

使用 CYCLE 选项替换 NOCYCLE 属性,在序列到达最大(升序)或最小(降序)限制值后继续

生产序列值。在递增顺序到达 max 后,它为下一个值生产 min 值。在递减顺序到达 min 后,它

为下一个值生产 max 值。

使用 NOCYCLE 选项可防止序列在到达声明的限制值之后生成更多的值。一旦序列到达该限制值,

sequence.NEXTVAL 的下一次引用将返回一条错误消息。

CACHE NOCACHE 选项

使用 CACHE 选项指定在内存中预分配以快速访问的序列值的新数目。高速缓存大小必须是在 INT

范围内的整数,它小于循环中的个数(或小于 (|max - min)/step|)。最小大小为 2 个预分配的值。

使用 NOCACHE 在内存中不预分配值。(另见 CREATE SEQUENCE 语句 中有关

SEQ_CACHE_SIZE 的描述。)

ORDER NOORDER 选项

这些关键字对序列的行为没有影响。序列始终以用户请求的顺序向用户发出值,就像 ORDER 关键

字是始终指定的一样。但是,ALTER SEQUENCE 语句接受 ORDER 和 NOORDER 关键字,以同

在 SQL 的其它方言中序列对象的实现相兼容。

 

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

评论