Oracle数据库开发之序列

序列:

在Oracle开发中,序列最常见的功能是为数据表提供自增列值,序列是一种数据库对象,用来自动产生一组唯一的序号,多个用户可以共同使用序列中的序号,一般将序列应用于表的主键列

对于Oracle数据库来说,自动生成序号都是必不可少的需求之一

语法:

CREATE SEQUENCES  序列名称

[MAXVALUE  最大值 | NOMAXVALUE]

[MINVALUE  最小值  | NOMINVALUE]

[INCREMENT  BY  步长] [START  WITH 开始值]

[CYCLE | NOCYCLE]

[CACHE 缓存个数 | NOCACHE]


序列属于数据库对象的创建过程,属于DDL的分类范畴,对于序列而言,创建之后一定会在数据字典之中保存

范例:查询user_sequences数据字典

序列已经创建成功,如果要想使用序列则可以使用如下两个伪列

nextval:取得序列下一个内容,每一次调用序列的值都会增长

currval:表示取得序列的当前内容,每一次调用序列不会增长

  1. 但是要注意的是:   
  2.     -  第一次NEXTVAL返回的是初始值;随后的NEXTVAL会自动增加你定义的INCREMENT BY值,  
  3.        然后返回增加后的值。CURRVAL 总是返回当前sequence的值,但是在第一次NEXTVAL  
  4.        初始化之后才能使用CURRVAL,否则会出错。一次NEXTVAL会增加一次sequence的值,  
  5.        所以如果你在同一个语句里面使用多个NEXTVAL,其值就是不一样的。明白?   
  6.     -  如果指定CACHE值,oracle就可以预先在内存里面放置一些sequence,这样存取的快  
  7.        些。  
  8.        cache里面的取完后,oracle自动再取一组到cache。 使用cache或许会跳号
  1. 2、 Alter sequence   
  2.     你或者是该sequence的owner,或者有ALTER ANY sequence权限才能改动sequence。 可  
  3. 以alter除start值之外的所有sequence参数。如果想要改变start值,必须drop  sequence  
  4. 再re-create。例子:  
  5.     ALTER sequence emp_sequence  
  6.         INCREMENT BY 10  
  7.         MAXVALUE 10000  
  8.         CYCLE    -- 到10000后从头开始  
  9.         NOCACHE;  
  10.   
  11.     影响sequence的初始化参数:   
  12.         sequence_CACHE_ENTRIES =  
  13.         设置能同时被cache的sequence数目。    
  14.       
  15.     可以很简单的Drop sequence   
  16.     DROP sequence order_seq; 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值