Oracle 序列问题

来源:百度知道 编辑:UC知道 时间:2024/05/22 15:39:38
我现在有一张表 table,有id 和若干个字段,我让id自增,写了个序列:create sequence res_seq minvalue 0 maxvalue 999999 start with 1 increment by 1 nocache cycle;,之后我向表中insert 若干条记录,此时id从1开始,正常。但是我将表中的记录删除掉 delete from table;,之后又插入若干条数据,发现不是从1开始循环了,
我是这样解决的:drop sequence myseq;
之后create sequence res_seq minvalue 0 maxvalue 999999 start with 1 increment by 1 nocache cycle
然后刷新服务器,
插入若干条数据发现记录是从1开始的但是,不是按顺序出现的
5
4
3
1
2
这样的情况,我不明白怎么回事!这样的情况是怎么引起的,我应该这样解决?谢谢!急用!!!

序列即sequence。

Sequence是数据库系统。这个序列一般作为代理主键(因为不会重复),没有其他任何意义。

Sequence是数据库系统的特性,有的数据库实现了Sequence,有的则没有。比如Oracle、DB2、PostgreSQL数据库实现Sequence,MySQL、SQL Server、Sybase等数据库没有Sequence。

创建方法:

CREATE SEQUENCE emp_sequence --序列名
INCREMENT BY 1 -- 每次加几个 
START WITH 1 -- 从1开始计数 
NOMAXVALUE -- 不设置最大值 
NOCYCLE -- 一直累加,不循环 
CACHE 10;

这和序列的cache有关,默认cache为20,也就是每次拿出20个放到内存中,当实例崩溃或者内存清洗后则会发生断号的情况。如果你想解决这个问题,可以设置序列的cache为1

--------------------------------
在oracle中sequence就是所谓的序列号,每次取的时候它会自动增加,一般用在需要按序列号排序的地方。
1、Create Sequence
你首先要有CREATE SEQUENCE或者CREATE ANY SEQUENCE权限,
CREATE SEQUENCE emp_sequence
INCREMENT BY 1 -- 每次加几个
START WITH 1 -- 从1开始计数
NOMAXVALUE -- 不设置最大值
NOCYCLE -- 一直累加,不循环
CACHE 10;

一旦定义了emp_sequence,你就可以用CURRVAL,NEXTVAL
CURRVAL=