注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

饥民2011

一直在搬砖

 
 
 

日志

 
 
 
 

Oracle中的序列 sequence 用法  

2012-09-06 23:12:16|  分类: Oracle |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
sybase 同埋sqlserver 系冇序列呢样野的。

但系oralce有。

oralce 序列简单d来讲类似于sybase的递增列的机制, 但是sybase 一张表只允许1个递增列, 而oracle没有这个限制,可以分别为一张表的若干个列指定不同的序列。

而且同1个序列可以由各个用户用在不同的表~

创建序列语法:
CREATE SEQUENCE sequence_name
               [INCREMENT BY n]                              
--递增的间隔,如果该句省略,默认是+1   
               [START WITH n]                                
--起始的值,如果该句省略,默认是1
               [{MAXVALUE n | NOMAXVALUE}]          --最大值,极限是10的27次方
               [{MINVALUE n | NOMINVALUE}]            --最小值,极限是-10的26次方
               [{CYCLE | NOCYCLE}]                         --到达最大或最小值后是否循环,默认是不循环
               [{CACHE n | NOCACHE}];
                          --指定 Oracle 服务器预先分配多少值,并且保持在内存中(默认
                                                                                            情况下,Oracle 服务器缓冲 20 个值,如果序列值被高速缓冲,如果系统故障它们将被丢失.




例如创建1个列, 用于表Dep_1 的主键。

Create sequence Dep_1_id_sq
                  increment by 1
                  start with 100
                  maxvalue 9999


跟住可以用下满语句来查看这个序列的属性。
select * from user_sequences where lower(sequence_name) = 'dep_1_id_sq' 



上图last_number 表示下1个可用序列号。

用这条语句来获得当前序列号码:
select dep_1_id_sq.currval from dual;


用这条语句来获得当前下一个号码:
select dep_1_id_sq.nextval from dual;

注:dep_1_id_sq.nextval 每被引用1次,例如上面的语句执行1此,序列号+1,也就是说上面语句每次返回的结果都比上一次加1。



使用序列:
如我要插入1条新数据到表dep_1,  可以用序列获得1个未被使用过的新key值。
insert into dep_1
select dep_1_id_sq.nextval,'ma',null from dual;


然后可以用
select dep_1_id_sq.currval from dual;
来或得这条数据的key值.
  评论这张
 
阅读(190)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017