oracle序列怎么修改 oracle如何修改序列

如何使用Oracle序列

如何使用Oracle序列:

创新互联专注于永春企业网站建设,成都响应式网站建设公司,商城开发。永春网站建设公司,为永春等地区提供建站服务。全流程按需求定制网站,专业设计,全程项目跟踪,创新互联专业和态度为您提供的服务

Oracle序列(sequence)是一种数据库项,能够生成一个整数序列。通常用于填充数字类型的主键列。

1、创建序列:

CREATE SEQUENCE sequence_name

[START WITH start_num]

[INCREMENT BY increment_num]

[{MAXVALUE maximum_num|NOMAXVALUE}]

[{MINVALUE minimum_num|NOMINVALUE}]

[{CYCLE|NOCYCLE}]

[{CACHE cache_num|NOCACHE}]

[{ORDER|NOORDER}]

其中:

start_num:序列开始整数

increment_num:每次增加的整数增量

maximum:序列最大整数

minimum:序列最小整数

CYCLE:循环生成

NOCYCLE:不循环生成,默认值

cache_num:保存在内存中的整数的个数

NOCACHE:不缓存任何整数

例如:

CREATE SEQUENCE seq_test;(默认值)

CREATE SEQUENCE seq_test START WITH 1 INCREMENT BY 2;

2、使用序列:

SELECT seq_test.nextval FROM dual;

insert into order_status2 (id) values (seq_test.nextval);

3、修改序列:

ALTER SEQUENCE语句来修改序列。可以修改的内容:

不能修改序列的初值

序列的最小值不能大于当前值

序列的最大值不能小于当前值

例如:ALTER SEQUENCE seq_test INCREMENT BY 3;

4、删除序列:

DROP SEQUENCE seq_test;

oracle批量修改序列方法

主键表 - T表 '100W'数据同步到T1表(同步:TRUNCATE/DELETE或IMPDP...等方式[手动改数据])

例如: T表对应SEQ_T.NEXTVAL= 100W;

T1表对应SEQ_T.NEXTVAL= 10W;

TRUNCATE TABLE T1;

INSERT TABLE T1 SELECT * FROM T;

数据同步但T1表对应SEQ_T.NEXTVAL= 10W序列不变;

此时T1调用序列INSERT到T1表时就会报错 ( ORA-00001 : 违反唯一约束条件 (LOTTERY.PK_T1))

(若批量同步很多表就可能会引起很多表序列需要更新成主键最大值+ 1才能保证不报错

(可以用把源库的SEQUENCE同步过来①或者如下存储解决② ))

oracle 序列,是否有更改START WITH 的语句。

理论上ORACLE序列,除了START值外任何参数都可以修改

当然最常用的就是先减去xx,然后增加

ALTER SEQUENCE SEQ INCREMENT -500;

SELECT SEQ.NEXTVAL FROM DUAL; --会得到0

ALTER SEQUENCE SEQ INCREMENT BY 1

还是DB2劲,可以直接修改

ALTER SEQUENCE SEQ RESTART WITH 5

如何修改序列的初始值

 Oracle 序列(Sequence)主要用于生成流水号,Oracle EBS系统中是经常用到的。但是,有时需要修改序列初始值(START WITH)时,好多人凭感觉认为:Alter Sequence SequenceName Start With N。事实上,在Oracle Db中,修改序列没有这样的语法。没有这样的语法情况怎么办,有二种方法可以完成

1.先删除序列,然后重新创建。不过这不是当前要讲的重点。这个方法比较方便。

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

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

2.1 执行:Alter Sequence SeqTest2010_S Increment By 1007;

2.2 执行:Select SeqTest2010_S.NextVal From Dual;

2.3 执行:Alter Sequence SeqTest2010_S Increment By 1;

修改完成。简单吧

ORACLE序列的当前值可不可以修改

不可以直接修改的,但是可以间接修改。

alter sequence se_1 increment by -2;

修改步进的值,然后查询一次,

select seq.nextval from dual;

然后再把步进修改回去,

alter sequence se_1 increment by 1;

相当于修改了序列的当前值。


分享标题:oracle序列怎么修改 oracle如何修改序列
文章地址:http://azwzsj.com/article/higcgo.html