什么是序列?
序列:可供多个用户来产生唯一数值的数据库对象。本质就是一个数组。
mysql数据库中的auto_increament.
自动提供唯一的数值 共享对象 主要用于提供主键值 将序列值装入内存可以提高访问效率
创建序列
create sequence sequenceName [inceement by n] #不长 [start with n] [{maxvalue n | nomaxvalue}] [{minvalue n | nominvalue}] [{cycle | nocycle}] [{cache n | nocache}]; --使用 insert into testseq values(myseq.nextval,'aaa');
查询序列
查询素具字典视图user_sequences获得序列的定义信息
select suqunece_name, min_value, max_value, increament_by, last_number form user_sequences;
修改序列
alter sequence sequenceName increment by 20 maxvalue 8888 nocache nocycle;
删除序列
drop sequence sequenceName;
伪列nextval、currval
nextval返回序列中下一个有效的值,任何用户都可以引用。一开始指向数组的地址,第一个元素之前的位置。
currval中存放序列的当前值。
nextval 应在currval之前指定
# nextval 应在currval之前指定 SQL> select myseq.currval from dual; select myseq.currval from dual * 第 1 行出现错误: ORA-08002: 序列 MYSEQ.CURRVAL 尚未在此会话中定义
SQL> select myseq.nextval from dual; NEXTVAL ---------- 1 已选择 1 行。 SQL> select myseq.currval from dual; CURRVAL ---------- 1 已选择 1 行。
使用序列
序列在下列情况下出现裂缝
回滚 系统异常 多个表同时使用同一序列