Oracle中selectXX_valfromdual什么意思呢?
说明
今天看别⼈的代码,遇见了⼀条sql    select ctg_fault_list_val from dual  不懂意思,然后就研究了下
  dual :是oracle 数据库中的虚拟表,并不是真实存在的
  XX_id_seq:这个是我们创建序列时⾃定义的⼀个序列名称
  ctg_fault_list_val:这个是取出序列的下⼀个值,序列可以⽤户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 by1 start with1 maxvalue 3 minvalue 1
Cycle cache 2;
//先nextval 后 currval
val  from dual;
Select seqEmp.currval  from dual;
Cache<max-min/increment
解释
{
Create创建
Sequence 序列 seqEmop 序列名称
Increment by步长
Stat with1开始值
Maxvalue  最⼤值
Minvalue  最⼩值
Cycle 循环 nocycle 不循环
Cache 缓存  Cache<maxvalue-minvalue/increment by//⼀般不采⽤缓存Nextvalue 下⼀个
Currval 当前值
}
实例应⽤
实现id的⾃动递增
create table cdpt(
id number(6),
name varchar2(30),
constraint pk_id primary key(id)
);
Create sequence seq_cdpt
Increment by1
Start with1
Maxvalue 999999
Minvalue 1
Nocycle
nocache
insert into cdpt values(val,’feffefe’);
commit;
select*from cdpt;
sql中select是什么意思使⽤序列
会产⽣裂缝
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;
val from dual;

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。