黄博文的地盘

专注WEB开发,共闯编程之路。

« 坚持下去,前面会好的!使用vss2005在vs2005项目中进行协作开发 »

oracle中实现自动编号-使用序列

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.

  • 相关文章:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

日历

最新评论及回复

最近发表

Powered By Z-Blog 1.8 Devo Build 80201

蜀ICP备08002594号. All Rights Reserved.
黄博文 版权所有 huangbowen521@126.com