Oracle Sequence主键自增

本文详细介绍了Oracle数据库中创建和使用Sequence来实现主键自增的方法,包括创建Sequence的语法、如何获取序列值、在触发器和Insert语句中的应用,以及如何修改和删除Sequence。此外,还讲解了Sequence的参数含义,如minValue、maxValue、incrementby等,帮助读者深入理解Oracle主键序列的管理。
摘要由CSDN通过智能技术生成

Oracle主键自增

一、创建Sequence语法

create sequence seq_name
[start with n]
[minvalue n | nomainvalue]
[maxvalue n | nomaxvalue]
[cache n | nocache]
[cycle | nocycle]
[order | noorder]

minValue: 指定序列最⼩值。
maxValue: 指定序列最⼤值。
increment by: 指定序列增长步长,可以为正(升序)、负整数(降序),但不能为0。
start with:指定序列起始数,默认为序列最⼩值。
nomaxValue:⽆最⼤值(实际为10^27或-1),默认。
nominValue:⽆最⼩值(实际为1或-10^26),默认。
cycle:指定序列达到最⼤值或最⼩值后继续从头开始⽣成。
nocycle:不循环⽣成,默认。
cache:指定数据库内存中预分配的序列值个数,以便快速获取,最⼩cache值为2。如果系统关闭或者其它情况将会导致序列不连续,也可以设置为nocache。
nocache:不指定缓存数,默认缓存20。
order:指定order条件保证序列按请求顺序⽣成。
noorder:不保证序列按请求顺序⽣成。

create sequence USER_ID_SEQ
minvalue 1
maxvalue 999999999999999999999999999
start with 21
increment by 1
cycle
cache 20;

二、Sequence使用

1、获取Sequence取值

select USER_ID_SEQ.nextval from dual; -- 查询序列下一个值;每次运行结果都不一样;且会使序列最后一个值更新;
select USER_ID_SEQ.currval from dual; -- 查询序列当前最后一个值;多次运行不会改变序列最后一个值;

2、创建触发器时指定

create or replace trigger t_user_tr
before insert on t_user
for each row
begin
select USER_ID_SEQ.nextval into :new.user_id from dual;
end t_user_tr;

3、Insert语句

insert into t_test values(seq_test.nextval, "zhangsan", 26)

三、修改sequence

alter sequence USER_ID_SEQ increment by 2;			--指定步长
alter sequence USER_ID_SEQ maxValue 99999999999;	--设置最大值

四、删除Sequence

drop sequence USER_ID_SEQ
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值