一、序列
是oacle提供的用于产生一系列唯一数字的数据库对象。
1) 自动提供唯一的数值
2)共享对象
3) 主要用于提供主键值
4) 将序列值装入内存可以提高访问效率
二、创建序列
1)要有创建序列的权限 create sequence 或 create any sequence
2) 创建序列的语法
CREATE SEQUENCE sequence //创建序列名称
[INCREMENT BY n] //递增的序列值是n 如果n是正数就递增,如果是负数就递减 默认是1
[START WITH n] //开始的值,递增默认是minvalue 递减是maxvalue
[{MAXVALUE n | NOMAXVALUE}] //最大值
[{MINVALUE n | NOMINVALUE}] //最小值
[{CYCLE | NOCYCLE}] //循环/不循环
[{CACHE n | NOCACHE}];//分配并存入到内存中
------------------------------------------------------------------------------------------------
举例1:
CREATE SEQUENCE seq_test_01
INCREMENT BY 1 -- 每次加几个
START WITH 1 -- 从1开始计数
NOMAXVALUE -- 不设置最大值
NOCYCLE -- 一直累加,不循环
CACHE 10;
------------------------------------------------------------------------------------------------
三、使用序列
NEXTVAL 返回序列中下一个有效的值,任何用户都可以引用
CURRVAL 中存放序列的当前值
NEXTVAL 应在 CURRVAL 之前指定 ,二者应同时有效
1)下一个有效值
select seq_test_01.nextval from dual;
2)当前值
select seq_test_01.currval from dual;
3)向表插入数据时直接使用
insert into t_test_01(fid,month,create_date)values(seq_test_01.nextval,'01',sysdate);
四、查询序列
1)查询当前用户下所有序列
a)select * from user_sequences;
b)SELECT T.OBJECT_NAME FROM USER_OBJECTS T WHERE T.OBJECT_TYPE='SEQUENCE' ;
五、删除序列
drop sequence seq_test_01;
------------------------------------------------------------------------------------------------
原文地址:http://blog.csdn.net/java958199586/article/details/7360152
------------------------------------------------------------------------------------------------