oracle中的序列 sequence

关于序列

序列是生成唯一整数值的结构,并且每个会话所获取到的序列值都是唯一的。唯一值是序列的最组要目的,主要的应用场景是生成记录的主键。
用序列生成主键最大的优势在于其性能。生成序列与表、行锁机制、及提交或回滚过程无关,所以生成序列的速度是非常快的。
序列的值全局唯一,例如有10个会话分别往order表插入数据,order表的主键是序列,那么每个会话获取到序列值在表里都是唯一的,而不是每个会话里唯一。
重启序列唯一的方法是删除它并重新创建它。

创建序列

CREATE SEQUENCE SEQL

其中seql是序列的名称。创建序列的参数如下:

参数名称说明
INCREMENT BY下一个数值应该比上一个数值大(或者小)多少,默认是1,如果是降序数列则为-1
START WITH序列的起始点:第一个选项发出的数值,默认值是1,但是可以是任何值
MAXVALUE升序序列生成错误或返回到START WITH 值之前能达到的最大值,默认无最大值
MINVALUE降序序列生成错误或返回到START WITH 值之前能达到的最小值,默认无最小值
CYCLE当达到最大值或者最小值时的行为,默认是抛出一个错误,如果指定CYCLE,则序列会返回到起点重复并重复
CACYEORACLE预先成批的生成多少个序列,默认值是20
ORDER只与集群数据库有关,强制集群中的所有实例协同递增序列

修改序列

ALTER SEQUENCE 序列名 参数名 参数值

例如:以下语句将修改序列ORDER_SEQ的CACHE为1000

ALTER SEQUENCE  ORDER_SEQ CACHE 1000;

序列的知识卡片

  • 对于一个设置了序列的表,如果要执行insert,则用户不仅要具备表的读写权限,还要有序列的权限
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

低音钢琴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值