序列概述
序列是一种模式对象,多个用户可以用它来生成唯一整数。序列发生器提供高可扩展性的和性能良好的方法,来为数字数据类型生成代理键。
序列特征
序列定义需要如下所示的常规信息:
•序列的名称
•序列是升序还是降序
•编号之间的间隔
•数据库是否要在内存中缓存生成的序列号集合
•当超限时序列是否要重复
下面的示例在示例模式oe中创建序列customers_seq。当向customers表中添加行时,应用程序可以使用此序列提供客户ID号。

对customers_seq.nextval的第一次引用会返回1000。第二次引用返回1001。每个后续引用的返回值比前一个引用大1。
对序列的并发访问
同一序列发生器可以为多个表生成编号。以这种方式,数据库可以自动生成主键,并协调跨多个行或表的键。例如,序列可以为orders表和customers表生成主键。
序列发生器可用于在多用户环境中生成唯一编号,不会引起磁盘I/O开销或事务锁定。例如,两个用户同时向orders表中插入新行。通过使用序列来为order_id列生成唯一编号,任何一个用户都不必等待别人输入下一个可用的订单号。序列自动为每个用户生成正确的值。
每个引用序列的用户都有权访问他或她的当前序列号,即在该会话中生成的最后一个序列值。用户可以发出一个语句生成一个新的序列号,或使用该会话最后生成的当前序列号。在某个会话中的一个语句生成了一个序列号后,只有该会话可以使用它。单个序列号可以跳过,如果个别序列号在某个事务中被生成使用,而最终被回滚,则它们会被跳过(而变得不连续)。
警告:
如果你的应用程序需要没有间隙的一组数字,则您不能使用Oracle序列。您必须在数据库中使用自己开发的代码来序列化你的程序行为。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




