ALTER SEQUENCE 语句

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

语法

元素 描述 限制 语法
max 值的新上限 必须为 > CURRVALrestart 的整数 文字的数值
min 值的新下限 必须为 < CURRVALrestart 的整数 文字的数值
owner sequence 的所有者 不能被此语句更改 所有者名称
restart 序列中新的第一个值 必须是在 INT8 范围内的整数 文字的数值
sequence 现有序列的名称 必须存在。不能是同义词 标识符
size 内存中要预分配的值的新数目 大于 > 2 但 < 一个循环中的基数(= |(max - min)/step|) 文字的数值
step 连续值之间的新的间隔 必须是非零整数 文字的数值

用法

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
 
1 最多使用一次路径
2 缺省的规范