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;

  

  

posted @   Latiny  阅读(399)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示