Oracle序列
序列(Sequence)
是一个oracle对象,表示一组连续的值,与表没有直接关系,用于实现列的自增。
Oracle通过序列实现数值的自增长
创建序列
- create sequence 序列名
- [increment by n] -- 步长(步进值), 默认1
- [start with x] -- 起始值, 默认1; 不能小于minvalue属性值
- [minvalue y] -- 最小值, 默认1
- [maxvalue z] -- 最大值, 默认1.0/0
- [cache m|nocache] -- 缓存量, 默认20个, m必须大于1
- [cycle |nocycle] -- 可循环|不可循环;
例如:
create sequence user_zz
increment by 1
start with 1
minvalue 1
maxvalue 999
nocache
nocycle
使用序列
序列有两个属性
- currval: 序列的当前值
若序列从未通过NEXTCAL获取过任何值, 该序列是没有当前值的
- nextval: 序列的下个值
例如:
--当序列创建完之后,开始是没有当前值currval
-- 查看序列的当前值
select user_zz.currval from dual
--获取序列的下一个值
select user_zz.nextval from dual;
-- 向表中插入数据时使用序列实现字段值自增长
insert into emp (empid, name) value (user_zz.nextval, 'AAA');
删除序列
drop sequence 序列名