序列概述

序列是一种模式对象,多个用户可以用它来生成唯一整数。序列发生器提供高可扩展性的和性能良好的方法,来为数字数据类型生成代理键。

序列特征

序列定义需要如下所示的常规信息:

 序列的名称

 序列是升序还是降序

 编号之间的间隔

 数据库是否要在内存中缓存生成的序列号集合

 当超限时序列是否要重复

下面的示例在示例模式 oe中创建序列 customers_seq。当向customers表中添加行时,应用程序可以使用此序列提供客户 ID 号。

CREATE SEQUENCE customers_seq
START WITH 1000
INCREMENT BY 1
NOCACHE
NOCYCLE;

对customers_seq.nextval 的第一次引用会返回 1000。第二次引用返回 1001。每个后续引用的返回值比前一个引用大1。

对序列的并发访问

同一序列发生器可以为多个表生成编号。以这种方式,数据库可以自动生成主键,并协调跨多个行或表的键。例如,序列可以为orders表和customers表生成主键。

序列发生器可用于在多用户环境中生成唯一编号,不会引起磁盘I/O开销或事务锁定。例如,两个用户同时向orders表中插入新行。通过使用序列来为 order_id 列生成唯一编号,任何一个用户都不必等待别人输入下一个可用的订单号。序列自动为每个用户生成正确的值。

每个引用序列的用户都有权访问他或她的当前序列号,即在该会话中生成的最后一个序列值。用户可以发出一个语句生成一个新的序列号,或使用该会话最后生成的当前序列号。在某个会话中的一个语句生成了一个序列号后,只有该会话可以使用它单个序列号可以跳过,如果个别序列号在某个事务中被生成使用,而最终被回滚,则它们会被跳过(而变得不连续)。

警告:

如果你的应用程序需要没有间隙的一组数字,则您不能使用 Oracle 序列。您必须在数据库中使用自己开发的代码来序列化你的程序行为。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值