序列
序列是一个存储的对象,它简单地以单调的升序 (或降序) 顺序生成数字序列。 序列提供了一种方法,使数据库管理器自动生成唯一整数和十进制主键,并在多个行和表中协调键。
可以使用序列来利用并行化,而不是通过锁定最近使用的值并将其递增来以编程方式生成唯一数字。
序列特别适合于生成唯一键值这一任务。 一个序列可用于许多表,或者可以为需要生成的键的每个表创建单独的序列。 序列具有以下属性:
- 可以具有有保证的唯一值,假定序列未重置且不允许值循环。
- 可以在定义的范围内具有递增或递减的值。
- 在连续值之间可以有除 1 以外的增量值 (缺省值为 1)。
- 可恢复。
给定序列的值由数据库管理器自动生成。 在数据库中使用序列可避免应用程序在数据库外部实现序列时产生的性能瓶颈。 序列的计数器独立于事务递增 (或递减)。
在某些情况下,可以按顺序引入间隔。 当给定事务两次递增序列时,可能会出现间隔。 事务可能会在生成的两个数字中看到间隔,因为可能有其他事务同时递增同一序列。 用户可能没有意识到其他用户是从同一序列中绘制的。 此外,由于可能已生成序号的事务可能已回滚,因此给定序列可能显示为在数字中产生了间隔。 更新序列不是事务的恢复单元的一部分。
使用 CREATE SEQUENCE 语句创建序列。 可以使用 sequence-reference来引用序列。 序列引用可以显示表达式可以显示的大多数位置。 序列引用可以指定要返回的值是新生成的值还是先前生成的值。 有关更多信息,请参阅 序列参考 和 CREATE SEQUENCE。
虽然有相似之处,但序列与标识列不同。 序列是对象,而标识列是表的一部分。 序列可以与多个表配合使用,但标识列是单个表的一部分。