Oracle Database 创建序列:示例

示例

目的

使用CREATE SEQUENCE语句创建一个序列,该序列是一个数据库对象,多个用户可以从中生成唯一的整数。您可以使用序列自动生成主键值。

生成序列号时,该序列将递增,而与提交或回滚的事务无关。如果两个用户同时增加同一序列,则每个用户获取的序列号可能会有间隔,因为序列号是由另一个用户生成的。一个用户永远无法获取另一用户生成的序列号。一个用户生成序列值后,该用户可以继续访问该值,而不管该序列是否被另一用户递增。

序列号是独立于表生成的,因此同一序列可用于一个或多个表。单个序列号可能会被跳过,因为它们是在最终回滚的事务中生成和使用的。此外,单个用户可能不会意识到其他用户正在从相同的序列进行绘制。

创建序列后,可以使用CURRVAL伪列(其返回序列的当前值)或NEXTVAL伪列(其递增序列并返回新值)在SQL语句中访问其值。

先决条件

要在自己的模式中创建序列,您必须具有CREATE SEQUENCE系统特权。

要在另一个用户的架构中创建序列,您必须具有CREATE ANY SEQUENCE系统特权。

创建序列:示例下面的语句在示例模式oe中创建序列customer_seq。当将行添加到客户表时,此序列可用于提供客户ID号。

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

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