Oracle之序列(主键自增)

1.

  在Oracle中完成自动增长的功能,则只能依靠序列完成,所有的自动增长操作,需要用户收工完成处理。

序列的创建格式:

CREATE SEQUENCE sequence
[INCREMENT BY n][STARTWITH n]
[{MAXVALUE n | NOMAXVALUE}]
[{MINVALUE n | NOMINVALUE}]
[{CYCLE|NOCYCLE}]
[{CACHE n|NOCACHE}] ;

范例:创建一个myseq的序列,验证自动增长的操作。

CREATE SEQUENCE myseq ;

序列创建完成之后,所有的自动增长应该由用户自己处理,所以在序列中提供了一下的两种操作:

  • nextVal : 学的序列的下一个内容
  • currVal : 去的序列的当前内容
范例:建立一张以验证序列的操作
CREATE TABLE testseq(
next NUMBER ,
curr NUMBER
) ;

现在向表中添加数据,添加数据的时候需要手工使用序列

范例:使用序列

INSERT INTO testseq(next,curr) VALUES (myseq.nextval,myseq.currval) ;


该操作执行5次。

查询testseq表:

SELECT * FROM testseq ;

可以发现,newVal的内容是种在进行自动增长的操作,而currVal使用取出当前操作的序列结果。

也就是说,现在这种序列,每次增长的幅度是1,也可以修改序列的增长幅度。

  • 每次的增长幅度 INCREMENT BY 长度
范例:
删除序列:
DROP SEQUENCE myseq ;
重新创建序列:

CREATE SEQUENCE myseq INCREMENT BY 2;

再创建表,进行test:

DROP TABLE testseq ;
CREATE TABLE testseq(
next NUMBER ,
curr NUMBER
) ;

插入5个数据,测试:

INSERT INTO testseq(next,curr) VALUES (myseq.nextval,myseq.currval) ;


默认情况下,序列从1开始,那么也可以使用 START WITH 指定其开始位置。

DROP SEQUENCE myseq ;
CREATE SEQUENCE myseq INCREMENT BY 2 STARTWITH 10 ;--从10开始


创建一个序列,让其取固定值在1、3、5、7、9,循环序列。

DROP SEQUENCE myseq ;
CREATE SEQUENCE myseq MAXVALUE 10 INCREMENT BY 2 START WITH 1
CACHE 2 CYCLE;







  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值