ORACLE SEQUENCE
来源:互联网 发布:故事软件下载 编辑:程序博客网 时间:2024/05/22 19:56
sequence就是序列号,每次取的时候它会自动增加。
1、Create Sequence
CREATE SEQUENCE sequence_test INCREMENT BY 1 -- 每次加的个数START WITH 1 -- 序列开始的值 NOMAXVALUE -- 表示不设置最大值 NOCYCLE -- 表示一直累加,不循环 CACHE 10;
创建完sequence后,你就可以用CURRVAL,NEXTVAL来获取当前值和下一个值
第一次NEXTVAL返回的是初始值;随后的NEXTVAL会自动增加你定义的INCREMENT BY值,然后返回增加后的值
CURRVAL 总是返回当前SEQUENCE的值,但是在第一次NEXTVAL初始化之后才能使用CURRVAL,否则会出错
一次NEXTVAL会增加一次SEQUENCE的值,所以如果你在同一个语句里面使用多个NEXTVAL,其值就是不一样的
sequence_test.CURRVAL --返回 sequence的当前值sequence_test.NEXTVAL --增加sequence的值,然后返回 sequence 值
可以使用sequence的地方:
- 不包含子查询、snapshot、VIEW的 SELECT 语句
- INSERT语句的子查询中
- INSERT语句的VALUES中
- UPDATE 的 SET中
例子:
INSERT INTO student VALUES (sequence_test.nextval, 'zhangsan', '21',0371); SELECT sequence_test.currval FROM DUAL;
- 如果指定CACHE值,ORACLE会预先在内存里面生成一些sequence,这样存取的速度会更快。
cache里面的取完后,oracle自动再取一组到cache。
使用cache或许会跳号, 比如数据库突然不正常down掉(shutdown abort),cache中的sequence就会丢失。
所以可以在create sequence的时候用nocache防止这种情况。
2、修改sequence
可以alter除start至以外的所有sequence参数。如果想要改变start值,必须 drop sequence 再 re-create。
例子:
ALTER SEQUENCE sequence_test INCREMENT BY 20 MAXVALUE 30000 CYCLE -- 到30000后从头开始 NOCACHE ;
影响Sequence的初始化参数:
SEQUENCE_CACHE_ENTRIES =设置能同时被cache的sequence数目。
删除SEQUENCE:
DROP SEQUENCE sequence_test;
- 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
- 关于项目中的决策会议
- iOS- 详解如何使用ZBarSDK集成扫描二维码/条形码
- 思科CCNA第三学期第一章答案
- 数学建模学习笔记(建模中的十大常用算法总结)
- jquery刷新页面 页面跳转 js常用函数/table边框边显示
- ORACLE SEQUENCE
- How to Become a Statesman
- 外挂辅助技术研究-逆向分析任务等级需求并测试
- Cenotso 6安装 webplib 0.4.2库,使用java调用成功
- 数据库 行转列 列转行详解
- select, poll epoll 的区别
- 在MacOS和iOS系统中使用OpenCV
- hibernate连接池说明
- eclipse使用技巧2——快捷设置