数据库对象_序列
序列
序列(Sequence)可以自动的按照既定的规则实现数据的编号操作
序列的完整创建语法
CREATE SEQUENCE 序列名
[INCREMENT BY 步长]
[START WITH 开始值]
[MAXVALUE 最大值 | NOMAXVALUE]
[MINVALUE 最小值 | NOMINVALUE]
[CYCLE | NOCYCLE]
[CACHE 缓存大小 | NOCACHE];
如果是默认序列,那么所有的选项都是默认值,默认初始值是1,最小值是0,最大值是无限大
查询数据字典—— user_sequences 可以查看序列
SELECT * FROM user_ sequences;
要操作一个已经创建完成的序列,则可以使用序列中提供的两个伪列进行操作
序列名称.currval: 表示取得当前序列已经增长的结果,重复调用多次后序列内容不会有任何变化,同时当前序列的大小(LAST_NUMBER)不会改变。
序列名称.nextval: 表示取得一个序列的下一次增长值,每调用一次序列都会自动增长
对于给出的伪列而言,一定是先使用nextval,而后才可以使用currval,也就是说表示的概念是只有在执行了nextval之后序列才真正进行到了可用的状态
对于序列之中,缓存是一个非常重要的概念,就是说在序列使用之前,已经在内存中为用户提供好了一系列的生成的序列号,用的时候不是说随用的时候随取,而是已经准备好了
如果设置了缓存,那么数据库出现了问题,那么可能这些缓存的数据就会消失,如果再次使用,就可能会出现跳号关系。
序列的最终目的是生成自动增长列,这个情况就需要结合表去一起使用
在添加语句中直接给想要自增的列上写 序列名称.nextval,就可以了
如果要删除序列使用:DROP SEQUENCE 序列名
修改序列的语法..和创建差不多
ALTER SEQUENCE 序列名称
[INCREMENT BY 步长]
[MAXVALUE 最大值 | NOMAXVALUE]
[MINVALUE 最小值 | NOMINVALUE]
[CYCLE | NOCYCLE]
[CACHE 缓存大小 | NOCACHE];