oracle 12c 重建序列SEQUENCE

来源:互联网 发布:黄伯云学术造假 知乎 编辑:程序博客网 时间:2024/06/11 04:06

序列与视图一样,并不占用实际的存储空间,只是在数据字典中保存它的定义信息。创建序列需要使用CREATE SEQUENCE语句,其语法如下:
CREATE SEQUENCE [schema]。sequence_name
[ START WITH start_number ]
[ INCREMENT BY increment_number ]
[ MINVALUE minvalue | NOMINVALUE ]
[ MAXVALUE maxvalue | NOMAXVALUE ]
[ CACHE cache_number | NOCACHE ]
[ CYCLE | NOCYCLE ]
[ ORDER | NOORDER ];
注意:cache参数指定内存预分配的序列数的个数,默认20个,为了加快访问速度。
      order参数指定是否按照请求次序生成序列号,一般使用序列生成主键值时,影响不大。
(2)序列中的两个伪列
Currval:用于获取序列的当前值,必须再使用nextval一次之后才能使用。
nextval:用于获取序列的下一个值,第一次使用返回的是初始值,向表中的主键赋值的时候使用此伪列。


select 'drop sequence '||s.SEQUENCE_OWNER||'.'||s.SEQUENCE_NAME||';'
 from dba_sequences@xxx s where s.SEQUENCE_OWNER ='xxx';
select 'create sequence '||s.SEQUENCE_OWNER||'.'||s.SEQUENCE_NAME||' start with '||s.LAST_NUMBER||' increment by '||s.INCREMENT_BY||'minvalue '||s.MIN_VALUE||' maxvalue '||s.MAX_VALUE||' NOCACHE NOCYCLE NOORDER;'
 from dba_sequences@xxx s where s.SEQUENCE_OWNER ='xxx';
 
select * from dba_sequences s where s.SEQUENCE_OWNER ='xxx';
0 0