oracle seq nextval,Oracle 中select XX_id_seq.nextval from dual 什么意思呢?

说明

今天看别人的代码 ,遇见了 一条sql    select ctg_fault_list_id_seq.nextval from dual  不懂意思,然后就研究了下

dual :是oracle 数据库中的虚拟表,并不是真实存在的

XX_id_seq:这个是我们创建序列时自定义的一个序列名称

ctg_fault_list_id_seq.nextval:这个是取出序列的下一个值,序列可以用户id生成器,每次我们都通过序列取到不同的值,并且不会重复

序列基本用法

序列: 是oacle提供的用于产生一系列唯一数字的数据库对象。

(1)自动提供唯一的数值

(2)共享对象

(3)主要用于提供主键值

(4)将序列值装入内存可以提高访问效率

创建序列

要有创建序列的权限

create sequence 或 create any sequence

创建序列的语法

CREATE SEQUENCE sequence //创建序列名称[INCREMENT BY n] //递增的序列值是n 如果n是正数就递增,如果是负数就递减 默认是1[START WITH n] //开始的值,递增默认是minvalue 递减是maxvalue[{MAXVALUE n | NOMAXVALUE}] //最大值[{MINVALUE n | NOMINVALUE}] //最小值[{CYCLE | NOCYCLE}] //循环/不循环[{CACHE n | NOCACHE}];//分配并存入到内存中

NEXTVAL 返回序列中下一个有效的值,任何用户都可以引用

CURRVAL 中存放序列的当前值

NEXTVAL 应在 CURRVAL 之前指定 ,二者应同时有效

示例

Create sequence seqEmp increment by 1 start with 1 maxvalue 3 minvalue 1Cycle cache2;//先nextval 后 currvalSelect seqEmp.nextval fromdual;Select seqEmp.currval fromdual;

Cache

解释

{Create创建

Sequence 序列 seqEmop 序列名称

Incrementby步长

Statwith 1开始值

Maxvalue 最大值

Minvalue 最小值

Cycle 循环 nocycle 不循环

Cache 缓存 Cache

Nextvalue 下一个

Currval 当前值

}

实例应用

实现id的自动递增

create tablecdpt(

idnumber(6),

namevarchar2(30),constraint pk_id primary key(id)

);Createsequence seq_cdpt

Incrementby 1Startwith 1Maxvalue999999Minvalue1Nocycle

nocacheinsert into cdpt values(seq_cdpt.nextval,’feffefe’);commit;select * from cdpt;

使用序列

会产生裂缝

l   序列在下列情况下出现裂缝:

•  回滚

•  系统异常

多个表同时使用同一序列

//修改序列的增量, 最大值, 最小值, 循环选项, 或是否装入内存alter SEQUENCE sequence //创建序列名称[INCREMENT BY n] //递增的序列值是n 如果n是正数就递增,如果是负数就递减 默认是1[START WITH n] //开始的值,递增默认是minvalue 递减是maxvalue[{MAXVALUE n | NOMAXVALUE}] //最大值[{MINVALUE n | NOMINVALUE}] //最小值[{CYCLE | NOCYCLE}] //循环/不循环[{CACHE n | NOCACHE}];//分配并存入到内存中

修改序列的注意事项

l   必须是序列的拥有者或对序列有 ALTER 权限

l   只有将来的序列值会被改变

l   改变序列的初始值只能通过删除序列之后重建序列的方法实现

删除序列

l   使用DROP SEQUENCE 语句删除序列

l   删除之后,序列不能再次被引用

Alter sequence seqEmp maxvalue 5;Select seqEmp.nextval from dual;

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值