Oracle 序列 sequence
2017-01-23 17:46
435 查看
一、序列
(一)序列定义
序列是一种用于产生唯一数字列值得数据库对象,一般使用序列自动地生成主码键或唯一键值,序列可以是升序或降序。
(二)NEXTVAL和CURRVAL伪列
可用语句sequence_name.currval和sequence_name.nextval来访问序列
currval:获取当前序列值;
nextval:返回下一个有效地序列值;
currval和nextval都返回number值;
currval能被引用之前,必须使用nextval产生一个序列值;
二、序列特点
可以自动产生唯一数值;
可被多个用户共享;
典型应用是生成主键值,用于标识记录的唯一性,但不保证其值是连续的,可能是中间回滚了;
使用缓存加速序列的访问速度。
三、序列操作
(一)创建序列
(二)序列使用
1、确定要用到序列的表是什么表
![](https://img-blog.csdn.net/20170123174151952?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGluNDM0NDA2MjE4/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
2、创建序列
3、使用序列
![](https://img-blog.csdn.net/20170123174239796?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGluNDM0NDA2MjE4/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
4、查看当前序列值
![](https://img-blog.csdn.net/20170123174305187?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGluNDM0NDA2MjE4/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
(三)修改序列
修改序列的要求
1、必须是序列的所有者或者ALTER ANY SEQUENCE权限才能修改序列;
2、除了START WITH不能修改,其他的都能改,直接给值就可以了;
3、最大值不能小于已经分配的序列值。
![](https://img-blog.csdn.net/20170123174448547?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGluNDM0NDA2MjE4/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
(四)删除序列
删除序列必须是序列的所有者或者具有drop any sequence权限的用户才能完成。
(一)序列定义
序列是一种用于产生唯一数字列值得数据库对象,一般使用序列自动地生成主码键或唯一键值,序列可以是升序或降序。
(二)NEXTVAL和CURRVAL伪列
可用语句sequence_name.currval和sequence_name.nextval来访问序列
currval:获取当前序列值;
nextval:返回下一个有效地序列值;
currval和nextval都返回number值;
currval能被引用之前,必须使用nextval产生一个序列值;
二、序列特点
可以自动产生唯一数值;
可被多个用户共享;
典型应用是生成主键值,用于标识记录的唯一性,但不保证其值是连续的,可能是中间回滚了;
使用缓存加速序列的访问速度。
三、序列操作
(一)创建序列
--创建序列test_sequence CREATE SEQUENCE test_sequence START WITH 10 --序列从10开始 INCREMENT BY 2 --序列每次增加2 MAXVALUE 100 --序列最大值100 MINVALUE 1 --序列最小值1 CYCLE --序列循环,每次增加2,一直到100后回到9重新开始 CACHE 10; --缓存中序列值个数为10
(二)序列使用
1、确定要用到序列的表是什么表
--创建学生表 CREATE TABLE STUDENT ( SNO NUMBER(4) PRIMARY KEY, SNAME VARCHAR2(20) NOT NULL, COURSE VARCHAR2(20), GRADE NUMBER(3) )
2、创建序列
--创建序列STUDENT_SEQUENCE CREATE SEQUENCE STUDENT_SEQUENCE START WITH 1020 --序列从1000开始 INCREMENT BY 1 --序列每次增加1
3、使用序列
--使用序列STUDENT_SEQUENCE生成STUDENT表中SNO列插入值 INSERT INTO STUDENT VALUES(STUDENT_SEQUENCE.NEXTVAL,'TOM','语文',85); INSERT INTO STUDENT VALUES(STUDENT_SEQUENCE.NEXTVAL,'JIM','数学',100); INSERT INTO STUDENT VALUES(STUDENT_SEQUENCE.NEXTVAL,'JIM', 9bb4 '语文',99); SELECT * FROM STUDENT;
4、查看当前序列值
--查看序列STUDENT_SEQUENCE序列当前值 SELECT STUDENT_SEQUENCE.CURRVAL FROM DUAL;
(三)修改序列
修改序列的要求
1、必须是序列的所有者或者ALTER ANY SEQUENCE权限才能修改序列;
2、除了START WITH不能修改,其他的都能改,直接给值就可以了;
3、最大值不能小于已经分配的序列值。
(四)删除序列
删除序列必须是序列的所有者或者具有drop any sequence权限的用户才能完成。
DROP SEQUENCE 序列号;
相关文章推荐
- oracle-序列(SEQUENCE)
- oracle-序列(SEQUENCE)
- oracle如何实现自增?----用序列sequence的方法来实现
- oracle-序列(SEQUENCE)
- ORACLE 自增序列SEQUENCE
- oracle-序列(SEQUENCE)-
- Oracle中自动获取序列sequence用法
- Oracle中序列sequence 用法
- oracle序列生成器(sequence)使用的一点小注意
- oracle中sequence序列的使用
- Oracle序列的(Sequence)使用
- ORACLE中序列-sequence的应用
- ORACLE 自增序列SEQUENCE
- Oracle中序列sequence 用法
- Oracle序列的(Sequence)使用
- oracle-序列(SEQUENCE)-
- ORACLE 自增序列SEQUENCE
- Oracle序列(sequence)创建失败,无法取值(.nextval),无法删除(drop)解决办法
- oracle 导出 序列 sequence
- oracle:序列操作,sequence