Access中有自动增加的字段,sql server中可以通过设置标识符来将int型实现自动编号。而在oracle中是使用序列-SEQUENCE来实现自动增加。
使用序列可以很方便的构造一个按照一定要求递增或者递减的序列,我们可以使用这个序列来实现某些字段的递增,递减。
一, 创建一个序列。
假设创建一个名为 myseq的序列。
create SEQUENCE myseq
INCREMENT BY n -- 每次加n个
START WITH n1 --从n1开始计数
MAXVALUE n2 | NOMAXVALUE -- 最大值n2 | 不设置最大值
CYCLE | NOCYCLE --当累加到最大值后重新开始计数| 一直累加,不循环
CACHE n3 | NOCACHE -- 在内存中预先存一组序列值 | 不在内存中预先存放一组序列值。
二, 使用一个序列。
假设已经建立了一个名为myseq的序列。
myseq.CURRVAL 返回序列的当前值
myseq.NEXTVAL 增加序列值,然后返回它的值。
注意一个序列刚建立的时候第一次使用NEXTVAL返回序列的初始值,如果第一次使用CURRVAL会报错。以后每次使用NEXTVAL都会使序列增加。
举个例子,myseq是一个初始值为1每次递增2的序列。
Insert into user (id,name) values (myseq.nextval,’flysky’);
User中加入的记录是 1,flysky.
再次 insert into user(id,name) values(myseq.nextval,’huang’);
User中加入的纪录是 3,huang。
三, 修改序列。
首先要有修改的权限,注意不能修改序列 START WITH 属性。
举个例子。
Alter SENQUENCE myseq
INCREMENT BY 5 -- 每次增加5
MAXVALUE 10000 -- 最大值为10000
CYCLE -- 到达最大值后从头开始递增
NOCACHE --不设置缓存
四, 删除序列。
DROP SEQUENCE 序列名。
举例。 DROP SEQUENCE myseq.