Oracle 序列(sequence)
序列(sequence) 是Oracle提供的用于生成一系列唯一数字的数据库对象。它会自动生成顺序递增或者递减的序列号,以实现自动提供唯一的主键值。序列可以在多用户并发环境中使用,并且可以为所有用户生成不重复的顺序数字,而不需要任何额外的I/O开销。
序列创建的语法:
create sequence <seq_name>
[start with n]
[increment by n]
[minvalue n|nominvalue]
[maxvalue n|nomaxvalue]
[cache n|nocache]
[cycle|nocycle]
[order|noorder]
seq_name: 序列名
start: 指定序列开始位置 n
increment by: 表示序列的增量,正数生成一个递增序列,负数生成一个递减序列,默认值为1.
minvalue: 序列的最小值
maxvalue: 序列的最大值
cache: 决定是否是否产生序列号分配,并存储在内存中
cycle: 当序列达到最大值或者最小值,可以复位并继续下去,如果达到极限则生成的下一个数为最小值或者最大值,如果为nocycle,达到最大值或者最小值,试图获取下一个值时报错
order: 保证生成的序列是按顺序产生的
实例:
create sequence seq_test_id
start with 10000
increment by 10
minvalue 1000
maxvalue 1000000
cache 50;
查看当前值与下一个值
select seq_test_id.currval, seq_test_id.nextval from dual;
使用序列 seq_test_id,注意只能用nextval,不能用currval,否则序列不会自增到下一个值
insert into t_test(id, name)
values (seq_test_id.nextval, 'latiny1');
insert into t_test(id, name)
values (seq_test_id.nextval, 'latiny2');
select *
from t_test;
修改序列
alter sequence seq_test_id
maxvalue 10000000
increment by 1000
cache 100;
insert into t_test(id, name)
values (seq_test_id.nextval, 'latiny3');
select *
from t_test;
删除序列
drop sequence seq_test_id;
查询当前用户的序列信息
select *
from user_sequences;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?