--序列:模拟自增(i++) 本质就是内存的数组
--oracle使用序列代替自增类型
--语法:
create sequence 序列名 [increment by 1]--每次加几个 [start with 1]--从1开始计数 [maxvalue/minvalue]--设置最大值/最小值 [nomaxvalue]--不设置最大值 [cycle/nocycle] [cache/nocache] cache元素个数 < 循环元素个数;
select * from user_sequences;
序列的两个属性:当前值(currval)、下一个值(nextval)使用的时候,先要nextval
循环序列 不能用于给 主键/唯一约束的键赋值
create sequence myseq increment by 2 start with 1 maxvalue 9 minvalue 1 cycle cache 3;
select myseq.nextval,ename from emp;
裂缝:断电、异常、回滚、多表使用同一序列...
--修改序列:只对修改之后的 操作有效 alter sequence myseq increment by 2; --删除序列:drop sequence 序列名称; drop sequence myseq; ----------------------------------- --创建一个自增的变量 create sequence x insert into bank values(x.nextval,100) --当前值:xxx.currval --先增长再返回:xxx.nextval select x.currval from dual; --创建一个序列(从100开始,每次递增5) create sequence y start with 100 increment by 5 nomaxvalue insert into bank values(y.nextval,100); select * from bank drop sequence x