oracle序列的创建、删除和使用
2015-07-24 15:22
477 查看
创建序列
create sequence TEST --序列名minvalue 1 --定义序列生成器能产生的最小值。选项NOMAXVALUE是默认选项,代表没有最小值定义,这时对于递减序列,系统能够产生的最小值是?10的26次方;对于递增序列,--最小值是1。
maxvalue 999999999999999999999999999 --定义序列生成器能产生的最大值。选项NOMAXVALUE是默认选项,代表没有最大值定义,这时对于递增Oracle序列,系统能够产生的最--大值是10的27次方;对于递减序列,最大值是-1。
start with 1 --定义序列的初始值(即产生的第一个值),默认为1。
increment by 1 --INCREMENT BY用于定义序列的步长,如果省略,则默认为1,如果出现负值,则代表Oracle序列的值是按照此步长递减的。
nocache --不缓存到内存里,如果要缓存,可以用【cache 缓存大小】来代替nocache
cycle--表示当序列生成器的值达到限制值后是否循环。CYCLE代表循环,NOCYCLE代表不循环。如果循环,则当递增序列达到最大值时,循环到最小值;最小值为1。对于递减序---列达到最小值时,循环到最大值。如果不循环,达到限制值后,继续产生新值就会发生错误。
order;--排序,不需要可以不加这个选项
其他
一、cache如果指定CACHE值,ORACLE就可以预先在内存里面放置一些sequence,这样存取的快些.cache里面的取完后,oracle自动再取一组到cache.使用cache或许会跳号,比如数据库突然不正常down掉(shutdown abort),cache中的sequence就会丢失. 所以可以在create sequence的时候用nocache防止这种情况。
二、order
1.保证序列号按请求顺序产生.如果你想以序列号作为timestamp(时间戳)类型的话,可以采用该选项.对于将序列用于生成主键来说,约定顺序通常并不重要.
2.ORDER和NOORDER的区别表现在并行服务和独占服务之间.打个比方:双CPU对同一个oracle DB中的ABC sequence申请序号时,这时就有两个请求A和B,假设A请求在前B在后,现在ABC序列中的值为9.如果添加了ORDER选项,那么一定是A请求到9,B请求到10.但如果没有添加此选项,则有可能B请求到9,A请求到10. 在单CPU中,可以用Java摸拟多线程作测试
三、操作序列
查询序列当前值和下一个值
SELECT
序列.CURRVAL,序列.NEXTVAL FROM DUAL;
删除序列
DROP SEQUENCE [schema].序列名;
相关文章推荐
- Oracle 给表添加主键和使ID自增、触发器、创建结构一样的表
- oracle,通过plsql创建用户表空间和所属用户示例
- [转]ORACLE函数大全
- Oracle使用imp导入dmp数据提示:只有DBA才能导入有其他DBA导入的文件
- Oracle数据库通过创建触发器实现自增功能
- Oracle分页查询语句(三)
- Oracle分页查询语句(二)
- Oracle分页查询语句(一)
- Oracle分页查询格式(十一)
- ORACLE-修改当前会话的语言环境
- Oracle 定时自动备份(windows任务计划,2016新增linux自动化备份)
- MySql分页和Oracle分页
- ORACLE 进程
- 关于Oracle的内连接问题
- sqlserver内置函数REPLACE()、ltrim()和oracle中ltrim()使用,注意区别哦!
- Oracle 参数化更新数据时报错:Oracle ORA-01722: 无效数字
- oracle死锁语句查询
- 解读 Oracle 12c 的 12 个新特性
- oracle initialization or shutdown in progress
- Linux中设置定期备份oracle数据库