ORACLE 序列sequence小結

2021-07-11 02:07:29 字數 1322 閱讀 7107

建立序列語法:  需要獲取相應的許可權

create sequence name 

[ integer          ----初始值和遞增間隔

|               ----上界或無上界

|                 ----下界或無下界

|                                       ----是否迴圈

|                            ----是否快取

|                                       ----是否排序

cache 代表是否在記憶體中預分配相應大小的快取,以方便快速訪問。注意 cache 快取的值個數《迴圈體值個數 。

若系統宕機或突然斷電容易出現跳號現象,在建立計數器後,在記憶體快取x個值,當系統崩潰後,記憶體中的值丟失,然而檔案中任然記錄了上次已經讀取的值,從而造成跳號。

cycle 指定迴圈序列,超過上界或下界後,從下界或上界重新開始。

increment by 指定遞增大小,可以為正或為負。

order 保證序列號是因為有請求才生成的,並且按照請求的順序生成。

使用序列的方式:

nextval 獲取下乙個序列值。

currval 獲取最後一次nextval的序列值。

注意:初始化時,即第一次獲取序列值時要使用nextval獲取第乙個序列值。否則會報錯。

序列修改和刪除語法:

alter sequence name

|                

|                                   

|                       

| drop sequence name;

若要使序列start with 的值不同,則只能先刪除後建立。

當使用nextval初始化時,若修改increment by, 則會產生跳號。如圖:初始化應該為100,但是結果為130。

執行修改語句前:

執行修改語句後:

應用場景:

可以用在select、update、insert中。

variable seqid number

insert into t3 values(seq_tl.nextval) returning ncol into :seqid;  

select * from t3 where ncol=:seqid;

返回插入行的序列值並顯示插入資訊。

Oracle中自動獲取序列sequence用法

oracle中沒有自增型別的字段的,所以通常情況下需要定義乙個sequence來作為自動增長型別欄位的資料。於是記錄了一些關於oracle sequence的資料,已備查用 oracle中的序列 sequence 1 如何定義乙個序列 僅向前的數字變數 和sql中的自動編號有點像 identity ...

Oracle建立自增長序列 SEQUENCE

oracle通過建立序列來實現自增張欄位。建立序列的語法 建立序列的語法 create sequence user sequence name increment by n start with n maxvalue n nomaxvalue minvalue n nominvalue 修改序列的語...

sql server建立序列sequence

1 建立乙個序列物件 1 create sequence schema name sequence name 2as built in integer type user defined integer type 3 start with 4increment by 5 6 7cycle 8 seq...