博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【oracle】oracle数据库建立序列、使用序列实现主键自增
阅读量:5030 次
发布时间:2019-06-12

本文共 1882 字,大约阅读时间需要 6 分钟。

2.建立序列

-- Create sequence 

create sequence SEQ_SHIP_IMAGE
minvalue 20
maxvalue 999999999999999999
start with 40
increment by 1
cache 20;

使用序列:

SELECT SEQ_SHIP_IMAGE.Nextval from dual;

insert into ship_image (id,img_path,remark,ship_id) values (SEQ_SHIP_IMAGE.Nextval,'ship3.jpg','8','8');

或者

insert into user(id, name, password, age, deleteFlag) values(#{id}, #{name}, #{password}, #{age}, #{deleteFlag})

 

所谓序列,在oracle中就是一个对象,这个对象用来提供一个有序的数据列,这个有序的数据列的值都不重复。

 

1.序列可以自动生成唯一值

2.是一个可以被共享的对象

3.典型的用来生成主键值的一个对象

4.可以替代应用程序代码

5.当sequence的值存放在缓存中时可以提高访问效率。

 

创建序列语法:

CREATE SEQUENCE name

[INCREMENT BY n]

[START WITH n]              

[{MAXVALUE n | NOMAXVALUE}]

[{MINVALUE n | NOMINVALUE}]

[{CYCLE | NOCYCLE}]

[{CACHE n | NOCACHE}]

 

note:

1.increment by n:表明值每次增长n(步长)

2.start with n: 从n开始

3.{MAXVALUE n | NOMAXVALUE}: 设置最大值

4.{MINVALUE n | NOMINVALUE}: 设置最小值,start with不能小于最小值。

5.CYCLE | NOCYCLE          : 是否循环,建议不使用

6.CACHE n | NOCACHE    : 是否启用缓存。

 

例如:

create sequence emp_id_seq

start with 1

increment by 1

nomaxvalue

nominvalue

nocycle

nocache;

note:可以通过数据字典user_sequences查看当前用户所拥有的序列信息。

例如:

select sequence_name,min_value,max_value,last_number

from user_sequences

where sequence_name = 'EMP_ID_SEQ';

 

序列的属性(伪列):

1.nextval : 返回下一个可用的序列值。

就算是被不同的用户调用,每次也返回一个唯一的值。

2.currval :获取序列当前的值。

在currval调用之前,必须保证nextval已经获取过一次值。

使用sequence:

例如:

1.向表中插入数据

insert into emp values(emp_id_seq.nextval);

2.查看序列的当前值

select emp_id_seq.currval from dual;

3.获取序列的下一个值。

select emp_id_seq.nextval from dual;

缓存:

使用缓存可以提高sequence的访问效率

 

修改sequence:

 

ALTER SEQUENCE name

[INCREMENT BY n]      

[{MAXVALUE n | NOMAXVALUE}]

[{MINVALUE n | NOMINVALUE}]

[{CYCLE | NOCYCLE}]

[{CACHE n | NOCACHE}]

 

note:

1.必须是序列的拥有者,或者具有alter权限

2.修改后的序列,只对之后的值起作用。

3.不能修改start with,如果想改,只能删除,重新创建,启动。

 

删除sequence:

drop sequence seq_name;

例如:

drop sequence emp_id_seq;

转载于:https://www.cnblogs.com/CESC4/p/7304941.html

你可能感兴趣的文章
使用自定义端点创建一个巴斯启用桌面应用程序发送通知到您的移动应用程序...
查看>>
抢占旅游移动APP高地
查看>>
ucore lab2
查看>>
[Untiy]贪吃蛇大作战(一)——开始界面
查看>>
网站中集成jquery.imgareaselect实现图片的本地预览和选择截取
查看>>
random(随机)模块
查看>>
1365 - 木杆上的蚂蚁
查看>>
Spire pdf 操作pdf,页眉 页脚 水印 二维码
查看>>
[bzoj3668][Noi2014]起床困难综合症/[洛谷3613]睡觉困难综合症
查看>>
Hibernate案例-------基于xml配置,使用Hibernate实现对员工表的增、删、改、查功能...
查看>>
Web前端面试题目汇总
查看>>
centos 7.0 下安装FFmpeg软件 过程
查看>>
Python oct() 函数
查看>>
【学习总结】GirlsInAI ML-diary day-6-String字符串
查看>>
【问题解决方案】知乎某个答案的链接在哪里的问题
查看>>
VC2005 向窗口的按钮发送单击消息
查看>>
java 中如何连接 oracle 数据库
查看>>
weui button的使用
查看>>
使用TidCookieManager得到cookie
查看>>
faiss学习
查看>>