oracle sequence失效 Oracle-序列(Sequence)的使用

oracle sequence失效 Oracle-序列(Sequence)的使用

0. 前言

在中,序列是用于产生一系列唯一数字的数据库对象。序列其实就是一个序列号生成器,可以为表中的行自动生成序列号。

主要的用途是生成主键的值,并且定义序列的用户必须具有 权限。

举个简单的例子来理解下序列的使用场景。

比如:在订单表中每增加一个订单,那么订单ID就+1,如果每次在插入数据时还要手动插入订单ID,既要查看上次订单ID延续到哪个值,也要手动去添加,容易出错且麻烦。那么我们可以将订单ID的获取方式设置为通过序列的方式自动添加,当有新的订单数据时oracle sequence失效,订单ID的值直接通过获取序列值来自动添加。

注意:序列的使用过程中可能会出现跳号的情况,并不是每个值之间的差值都相等,需要考虑所用列的实际需求。

1. 查看当前用户下的序列

select * from user_sequences;

1.1 举例

oracle sequence失效

2. 创建序列 2.1 最简单的创建,不加任何参数

create sequence 序列名;

2.1.1 举例

创建一个序列 。创建完后再查看当前用户下的序列,显示已经创建好了。可以看到各个参数的默认值。

oracle sequence失效

也可从左侧序列列表里【右击–查看】,可查看序列的具体信息,如下图所示。

oracle sequence失效

2.2 加上参数,创建序列

create sequence 序列名称

oracle sequence失效

start with n --起始值,从n开始,默认为1 increment by n --设置步长为n,默认为1 minvalue n --设置最小值为n,默认为1 maxvalue n --设置最大值为n,可以不设置,不设置应写为 nomaxvalue ,也就是无穷大 cycle --达到最大值后循环或不循环,即当增长到最大值后,再从最小值重新开始。不循环应写为 nocycle , cache n --是否设置缓存,n默认为20

2.2.1 举例

创建一个序列 ,各项参数如下图所示

oracle sequence失效

3. 向序列中取值

select 序列名.nextval from dual;

3.1 举例

针对刚才创建的序列 ,向序列中取值,如下图所示。可以看到此时序列已经存在了一个值,值为1。

oracle sequence失效

4. 获取序列的当前值

select 序列名.currval from dual;

4.1 举例

上面针对进行了的操作,此时获取序列的当前值应该为1oracle sequence失效 Oracle-序列(Sequence)的使用,如下图所示。

oracle sequence失效

oracle sequence失效

不过需要注意的是,刚创建完序列后oracle sequence失效,必须先执行至少一次 (序列取值操作) 后才能查询当前值,否则会报错。

比如,上面创建的 只是创建完了,还没有进行 . 操作,此时我们获取一下 的当前值,结果会报错,如下图所示。

oracle sequence失效

此时,我们只需向序列 中取一次值(.)即可,如下图所示。

oracle sequence失效

5. 修改序列

alter sequence 序列名
start with n       --修改起始值,若已经使用了,则无法修改
increment by n     --increment值必须小于maxvalue与minvalue的差
cache n            --cache值必须小于cycle值(即循环一次有几个数)

5.1 举例

(1)我们先尝试修改 起始值 ,刚创建的序列 的起始值为2,我们将起始值修改为1oracle sequence失效 Oracle-序列(Sequence)的使用,结果会报错。如下图所示,无法修改起始值。

oracle sequence失效

(2)修改序列的步长。重新创建一个序列 ,参数值如下图所示。

oracle sequence失效

修改序列步长为10oracle sequence失效,然后取值–>获取当前值。

oracle sequence失效

再进行一次 取值–>获取当前值 ,结果如下,说明每次步长为10设置成功。

oracle sequence失效

感谢大家阅读查看,如有补充和建议,欢迎留言~期待关注、点赞、收藏

公告:
1. 本站所有资源来源于用户上传和网络,如有侵权请联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系站长处理!
6. 本站不售卖代码,资源标价只是站长收集整理的辛苦费!如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。
7. 站长QQ号码 2205675299

资源库 - 资源分享下载网 » oracle sequence失效 Oracle-序列(Sequence)的使用

常见问题FAQ

关于资源售价和售后服务的说明?
本站所有资源的标价均为本站收集资源的辛苦费,不代表资源本身的价值。软件是高智慧高价值的商品,不可能是白菜价。本站资源标价只是赞助费用,收取的赞助费仅用来维持本站的日常运营!毕竟收集整理资料需要投入云计算资源和站长大量的精力。
代码有没有售后服务和技术支持?
由于代码的运行具有不可预见性,本站不保证代码完整可运行,不提供技术支持和售后服务。 本站原创代码都是站长自己开发的,可以有偿提供技术支持服务。 网站里标明【亲测】的代码都是站长亲测过的,其他的代码由于精力有限,没有一一测试,不能保证代码就一定能够使用,更没有技术支持服务,下载前请自行斟酌。
有没有搭建服务?
由于搭建服务比较费时费力,所以本站除了原创代码外均不提供搭建服务。本站分享代码纯属兴趣爱好,不以盈利为目的,请勿咨询有没有搭建服务,谢谢理解。
链接地址失效了怎么办?
请带上资源链接地址联系客服,工作时间内我们看到后将第一时间回复。
关于解压密码
本站资源一般都没有加密,如果发现需要解压密码的,那么就输入 hao.35dc.com 试试。

发表评论

资源库,由老程序员细心甄别、精心筛选,只为提供优质的源码资源

关于我们 联系我们