是我,君柳下

是我,君柳下

Oracle(创建序列)

概念:

所谓序列,在oracle中就是一个对象,这个对象用来提供一个有序的数据列,这个有序的数据列的值都不重复。
1.序列可以自动生成唯一值
2.是一个可以被共享的对象
3.典型的用来生成主键值的一个对象
4.可以替代应用程序代码
5.当sequence的值存放在缓存中时可以提高访问效率。


创建序列语法:
CREATE SEQUENCE name
[INCREMENT BY n]
[START WITH n]             
[{MAXVALUE n | NOMAXVALUE}]
[{MINVALUE n | NOMINVALUE}]
[{CYCLE | NOCYCLE}]
[{CACHE n | NOCACHE}]


note:
1.increment by n:表明值每次增长n(步长)
2.start with n: 从n开始
3.{MAXVALUE n | NOMAXVALUE}: 设置最大值
4.{MINVALUE n | NOMINVALUE}: 设置最小值,start with不能小于最小值。
5.CYCLE | NOCYCLE          : 是否循环,建议不使用
6.CACHE n | NOCACHE    : 是否启用缓存。

 

例如:

create sequence emp_id_seq
start with 1
increment by 1
nomaxvalue
nominvalue
nocycle
nocache;

note:可以通过数据字典user_sequences查看当前用户所拥有的序列信息。
例如:
select sequence_name,min_value,max_value,last_number
from user_sequences
where sequence_name = 'EMP_ID_SEQ';

 

序列的属性(伪列):
1.nextval : 返回下一个可用的序列值。
就算是被不同的用户调用,每次也返回一个唯一的值。
2.currval :获取序列当前的值。
在currval调用之前,必须保证nextval已经获取过一次值。
使用sequence:
例如:
1.向表中插入数据
insert into emp values(emp_id_seq.nextval);
2.查看序列的当前值
select emp_id_seq.currval from dual;
3.获取序列的下一个值。
select emp_id_seq.nextval from dual;

缓存:
使用缓存可以提高sequence的访问效率

 
修改sequence:
ALTER SEQUENCE name
[INCREMENT BY n]     
[{MAXVALUE n | NOMAXVALUE}]
[{MINVALUE n | NOMINVALUE}]
[{CYCLE | NOCYCLE}]
[{CACHE n | NOCACHE}]

 

note:
1.必须是序列的拥有者,或者具有alter权限
2.修改后的序列,只对之后的值起作用。
3.不能修改start with,如果想改,只能删除,重新创建,启动。

 

删除sequence:
drop sequence seq_name;
例如:
drop sequence emp_id_seq;

例如:

--创建序列
create sequence denggh_seq
start with 1
increment by 1
nomaxvalue
nominvalue
nocycle
nocache;

--创建表
create table denggh_SERVICEADM
(
  p_servicecode  VARCHAR2(30) not null
)
-- 查询表
select * from  denggh_SERVICEADM;

--使用序列
insert into denggh_SERVICEADM values(denggh_seq.nextval);

--修改序列
alter sequence denggh_seq
increment by 2
nomaxvalue
nominvalue
nocycle
nocache;
--删除序列
drop sequence  denggh_seq;




阅读更多
想对作者说点什么? 我来说一句

oracle 创建序列

2009年11月27日 2KB 下载

没有更多推荐了,返回首页

不良信息举报

Oracle(创建序列)

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭