会话级序列
在 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
另开一个窗口
![](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;
NEXTVAL
1
SQL> /
NEXTVAL
2
另一个
通过ALTER SQEUENCE命令将序列由全局修改为会话级和将序列从会话级修改为全局有所不同,将序列由全局修改为会话级时,序列的值不会重新初始化,而是根据当前会话的上一个序列值开始,详见下面的测试。
对于会话级序列,CACHE, NOCACHE, ORDER 或 NOORDER 语句会予以忽略。
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341