序列

--序列:模拟自增(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

 

posted @ 2020-07-23 22:13  弹弹大魔王  阅读(26)  评论(0)    收藏  举报