oracle序列中的起始值可以为0吗

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle序列中的起始值可以为0吗相关的知识,希望对你有一定的参考价值。

当然可以

CREATE SEQUENCE emp_sequence --创建序列emp_sequence
INCREMENT BY 1 -- 每次加几 
START WITH 0 -- 从0开始计数
MINVALUE 0 --设置最小值,这句一定要加,不加的话默认为1,你就无法从0开始计数了 
NOMAXVALUE -- 不设置最大值 
NOCYCLE -- 一直累加,不循环 
CACHE 10;
参考技术A CREATE SEQUENCE DEPT_sequence --创建序列DEPT_sequence
INCREMENT BY 1 -- 每次递增1
START WITH 0 --初始值从0开始
MINVALUE 0 --设置最小值,这句一定要加,不加的话默认为1,就无法从0开始计数了
NOMAXVALUE -- 不设置最大值
NOCYCLE -- 一直累加,不循环
CACHE 10;
参考技术B 当然可以的

Oracle修改序列(Sequence)起始值的方法

Oracle 序列(Sequence)主要用于生成流水号,在应用中经常会用到,特别是作为ID值,拿来做表主键使用较多。

但是,有时需要修改序列初始值(START WITH)时,有同仁使用这个语句来修改:alter sequence sequencename start with xxxxxxxx。但是,在Oracle DB中,修改序列没有这样的语法。下面介绍几种修改方式:

1.先删除序列,然后重新创建。不过这不是当前要讲的重点。这个方法比较暴力,也比较方便,如果序列有在用,会影响应用的正常使用。

2.写个循环来增加。如果需要增加500,写个循环运行500次SELECT SEQUENCE_NAME.NEXTVAL FROM DUAL;

3.通过Increment By来实现修改初始值。

例如:若序列名称是SEQ_TEST,初始值是13,而现在要设置初始值为1013,Increment By值为:1000(1013-13)

1) 执行:ALTER SEQUENCE SEQ_TEST INCREMENT BY 1000;

2) 执行:SELECT SEQ_TEST.NEXTVAL FROM DUAL;

3) 执行:ALTER SEQUENCE SEQ_TEST INCREMENT BY 1;

修改完成。
下面是一个操作样例截图:
技术分享
 
 

以上是关于oracle序列中的起始值可以为0吗的主要内容,如果未能解决你的问题,请参考以下文章

Oracle修改序列(Sequence)起始值的方法

oracle 序列初始值的设定

Oracle详解Oracle中的序列

Oracle序列索引视图分页

求oracle数据库大神

oracle序列问题