在 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;session
CREATE SEQUENCE "SYS"."SESSION_SEQ" MINVALUE 1 MAXVALUE 999999999999999999
SQL> select session_seq.nextval from dual;ide
1 另開一個窗口 ![](https://s1.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;code
1
SQL> /blog
2 另外一個
經過ALTER SQEUENCE命令將序列由全局修改成會話級和將序列從會話級修改成全局有所不一樣,將序列由全局修改成會話級時,序列的值不會從新初始化,而是根據當前會話的上一個序列值開始,詳見下面的測試。
對於會話級序列,CACHE, NOCACHE, ORDER 或 NOORDER 語句會予以忽略。rem