建立序列示例

目的

使用 CREATE SEQUENCE 語句建立一個序列,該序列是一個資料庫物件,多個使用者可以從中生成唯一的整數。你可以使用序列自動生成主鍵值。

生成序列號時,序列會遞增,與事務提交或回滾無關。如果兩個使用者同時遞增相同的序列,則每個使用者獲取的序列號可能有間隙,因為序列號是由另一個使用者生成的。一個使用者永遠不能獲取另一個使用者生成的序列號。在由一個使用者生成序列值之後,該使用者可以繼續訪問該值,而不管該序列是否由另一個使用者遞增。

序列號是獨立於表生成的,因此相同的序列可用於一個或多個表。單個序列號可能會被跳過,因為它們是在最終回滾的事務中生成和使用的。另外,單個使用者可能沒有意識到其他使用者正在從相同的序列中繪製。

建立序列後,你可以使用 CURRVAL 偽列訪問 SQL 語句中的值,該偽列返回序列的當前值,或 NEXTVAL 偽列,它會遞增序列並返回新值。

先決條件

要在自己的模式中建立序列,你必須具有 CREATE SEQUENCE 系統特權。

要在另一個使用者的模式中建立序列,你必須具有 CREATE ANY SEQUENCE 系統特權。

建立序列:示例以下語句在示例模式 oe 中建立序列 customers_seq。當行新增到 customers 表時,此序列可用於提供客戶 ID 號。

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

對 customers_seq.nextval 的第一個引用返回 1000.第二個引用返回 1001.每個後續引用將返回大於先前引用的值 1。