oracle中的CURRVAL和NEXTVAL用法

2022-02-25 23:43:04 字數 1559 閱讀 2041

原文:

1.什麼是sequence?其作用是什麼?

在oracle資料庫中,什麼是序列呢?其中的作用是什麼呢?其實sequence是序列號生成器,可以為表中的行自動生成序列號,產生一組等間隔的數值(型別為數字)。其主要的用途是生成表的主鍵值,可以在插入語句中引用,在插入之前,獲取序列號nextval值,然後進行插入。也可以通過查詢檢查當前值,或使序列增至下乙個值。

2.如何定義乙個sequence?

在oracle中sequence就是所謂的序列號,每次取的時候它會自動增加,一般用在需要按序列號排序的地方或者在實際開發中,比如乙個需求**中的需求id是唯一主鍵,都可以用sequence來獲取。

首先在用oracle序列號之前,我們首先得建立乙個序列然後就可以通過curry、nextval,獲取當前表中的返回sequence的當前值、下乙個squence的值。可以通過下面的語句來建立squence:

create sequence inr_requirment_squence 

increment by

1 --每次加幾個

start with

1 --從1開始計數

nomaxvalue --不設定最大值

nocycle --一直累加,不迴圈

cache

10;

上面的語句則建立了乙個inr_requirment_squence序列

3.如何獲取乙個sequence的值?

select inr_requirment_squence.currval from dual –獲取當前的sequence的值,
第一次nextval返回的是初始值;隨後的nextval會自動增加你定義的increment by值, 然後返回增加後的值。currval 總是返回當前sequence的值,但是在第一次nextval 初始化之後才能使用currval,否則會出錯。一次nextval會增加一次sequence的值, 所以如果你在同乙個語句裡面使用多個nextval。

如圖:

4.可以在哪些地方使用sequence?

不包含子查詢、snapshot、view的 select 語句

insert語句的子查詢中

nsert語句的values中

update 的 set中

在實際開發中,比如乙個表中的主鍵需要先得到主鍵id,可以用nextval來獲下乙個取序列值,然後再進行其他操作。

5.如何刪除sequence?

drop sequence policy_id_seq; –policy_id_seq為sequence的名字,如果要改變sequence中的初始值,必須先刪除序列號然後再進行建立。你或者是該sequence的owner,或者有alter any sequence許可權才能改動sequence,直接用alter語句進行sequence的更新。

oracle中的CURRVAL和NEXTVAL用法

在oracle資料庫中,什麼是序列呢?其中的作用是什麼呢?其實sequence是序列號生成器,可以為表中的行自動生成序列號,產生一組等間隔的數值 型別為數字 其主要的用途是生成表的主鍵值,可以在插入語句中引用,在插入之前,獲取序列號nextval值,然後進行插入。也可以通過查詢檢查當前值,或使序列增...

oracle中的CURRVAL和NEXTVAL用法

1.什麼是sequence?其作用是什麼?在oracle資料庫中,什麼是序列呢?其中的作用是什麼呢?其實sequence是序列號生成器,可以為表中的行自動生成序列號,產生一組等間隔的數值 型別為數字 其主要的用途是生成表的主鍵值,可以在插入語句中引用,在插入之前,獲取序列號nextval值,然後進行...

oracle中的CURRVAL和NEXTVAL用法

1.什麼是sequence?其作用是什麼?在oracle資料庫中,什麼是序列呢?其中的作用是什麼呢?其實sequence是序列號生成器,可以為表中的行自動生成序列號,產生一組等間隔的數值 型別為數字 其主要的用途是生成表的主鍵值,可以在插入語句中引用,在插入之前,獲取序列號nextval值,然後進行...