会话级序列

在 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

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

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

NEXTVAL

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

NEXTVAL

1

SQL> /blog

NEXTVAL

2
另外一个

会话级序列
经过ALTER SQEUENCE命令将序列由全局修改成会话级和将序列从会话级修改成全局有所不一样,将序列由全局修改成会话级时,序列的值不会从新初始化,而是根据当前会话的上一个序列值开始,详见下面的测试。
会话级序列
会话级序列
对于会话级序列,CACHE, NOCACHE, ORDER 或 NOORDER 语句会予以忽略。rem

相关文章
相关标签/搜索