oracle序列的注意点,oracle中创建序列以及序列使用注意事项

1.oracle是通过序列(sequence)来处理自动增长列 用法: create sequense my_seq   //创建序列名:my_seq start with 1  //从1开始 increment by 1  //每次增长1 maxvalue 999999  //nomaxvalue(不设置最大值) ---最大值 minvalue 1  //最小值 cycle  //nocycle   一直累加,不循环   ;cycle 表示循环 nocache   ---缓存 //cache 10 表示一次产生10个号, //但是使用缓存产生号,优点是提高效率,缺点是可能产生跳号 //上面表示从1开始,每次增长1,最大值为999999,之后又循环开始 ---创建表 create table test1(id number primary key ,name varchar2(32)); insert into test1 values(myseq.nextval,'abc'); insert into test1 values(myseq.nextval,'bdc'); (1)可以为表中的列自动产生值 (2)由用户创建数据库对象,并可由多个用户共享 比如:system用户使用scott创建的序列,从什么开始增长? 答:接着scott里面的增长 (3)一般用于主键或唯一列 2.序列细节说明: 一旦定义了某个序列,可以使用currval,nextval currval:返回sequence的当前值 nextval:返回增加sequence的值,然后返回sequence的值 比如: 序列名.currval:select 方案名.序列名.currval from dual;//用于查看当前序列是多少 序列名.nextval:select 方案名.序列名.nextval from dual;//用于查看当前序列的下一个值是多少 【什么时候使用sequence】 ①不包含子查询,snapshot,view的select语句【用的少】 ②insert语句的子查询中【用的较多】 ③insert语句的values 中【用的多】 ④update的set中【用的较多】 3:使用sequence注意事项: ①currval总是返回当前sequence的值,只有在第一次nextval初始化后,才能使用currval, 否则会出错。每使用一次nextval,就会增加一次sequence的值,同一个语句里面要是有多个nextval,其数值就是不一样的 ②第一次nextval返回的值是初始值:随后的nextval会自动增加定义的increment by值,然后 返回增加后的值 ③如果指定cache值,oracle就可以预先在内存里面放置一些sequence,这样存取会更快, cache里面取完后,oracle自动再取一组到cache,使用cache或许会跳号,比如数据库突然不正常 down掉,cache中的sequence就会丢失,可以在定义sequence的时候,使用nocache防止这种情况

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值