會話級序列

在 12c 中現在可以創建新的會話級數據庫序列來支持會話級序列值。這些序列的類型在有會話級的全局臨時表上最爲適用。

會話級序列會產生一個獨特範圍的值,這些值是限制在此會話內的,而非超越此會話。一旦會話終止,會話序列的狀態也會消失
SQL> create sequence session_seq start with 1 increment by 1 session;

Sequence created.
SQL> select dbms_metadata.get_ddl('SEQUENCE','SESSION_SEQ','SYS') FROM DUAL;

DBMS_METADATA.GET_DDL('SEQUENCE','SESSION_SEQ','SYS')

CREATE SEQUENCE "SYS"."SESSION_SEQ" MINVALUE 1 MAXVALUE 999999999999999999
SQL> select session_seq.nextval from dual;

NEXTVAL

     1
             另開一個窗口
   ![](http://i2.51cto.com/images/blog/201801/03/1a5988b3fcf0f27cbf8c02640235bf7a.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
     可見,序列的值只對SESSION級別有影響,可以通過ALTER SEQUENCE命令對某個序列設置爲全局或會話級,如下爲將這個序列修改爲全局。序列值會從初始值重新開始
     SQL> ALTER SEQUENCE session_seq GLOBAL;

Sequence altered.

SQL> select session_seq.nextval from dual;

NEXTVAL

     1

SQL> /

NEXTVAL

     2
另一個

會話級序列
通過ALTER SQEUENCE命令將序列由全局修改爲會話級和將序列從會話級修改爲全局有所不同,將序列由全局修改爲會話級時,序列的值不會重新初始化,而是根據當前會話的上一個序列值開始,詳見下面的測試。
會話級序列
會話級序列
對於會話級序列,CACHE, NOCACHE, ORDER 或 NOORDER 語句會予以忽略。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章