oracle数据库主键自增序列_【oracle】oracle数据库建立序列、使用序列实现主键自增...
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;
oracle数据库主键自增序列_【oracle】oracle数据库建立序列、使用序列实现主键自增...相关推荐
- oracle数据库主键自增序列_Oracle数据库主键自增
Oracle数据库主键自增 在学习mysql时,我们很容易通过auto_increment就能实现主键自增的功能,但是在Oracle数据库中,是没有这个关键字的,所以也不能通过这样来实现主键自增.下面 ...
- Oracle数据库主键自增
Oracle数据库主键自增 在学习mysql时,我们很容易通过auto_increment就能实现主键自增的功能,但是在Oracle数据库中,是没有这个关键字的,所以也不能通过这样来实现主键自增.下面 ...
- Navicat:设置Oracle数据库主键自增
一. 创建如下表 Oracle数据库不同于Mysql.Sql Server数据库,Oracle数据库主键自增不能在建表时直接设置,而是需要通过序列和触发器进行设置! 二.创建序列 create seq ...
- mysql选择主键的原则_如何选择数据库的主键
我们现在在思考一下,应该采用什么来作表的主键比较合理,申明一下,主键的设计没有一个定论,各人有各人的方法,哪怕同一个,在不同的项目中,也会采用不同的主键设计原则. 第一:编号作主键 此方法就是采用实际 ...
- 两个主键怎么设置tsql_如何在sql server中设置两个主键?
展开全部 主键是数据库表的一个重要属性,建立主键可以避免表中存在完全相同的记录,也就是说主键在e68a8462616964757a686964616f31333365633938一张表中的记录值是唯一 ...
- oracle数据库主键自增序列_Oracle数据库序列详解
前言: 做过web开发的人员基本上都知道,数据库表中的主键值有的时候我们会用数字类型的并且自增.这样mysql.sql server中的都可以使用工具创建表的时候很容易实现.但是oracle中没有设置 ...
- oracle数据库主键自增序列_oracle数据库ID自增长--序列
什么是序列?在mysql中有一个主键自动增长的id,例如:uid number primary key auto_increment;在oracle中序列就是类似于主键自动增长,两者功能是一样的,只是 ...
- oracle中主键自增长,oracle 数据库主键自动增长方法
oracle 数据库没有像 MYSQL一样有 自动ID增值 的功能,如要实现可以用触发器. 首先就是建立一个序列,序列有有自动增值的功能,再建立一个触发器. 如: 建立一个序列 CREATE SEQU ...
- sequence解决oracle数据库主键不自增
工作这么多年.总算遇到一家数据库用oracle的企业了,由于oracle与mysql的不同,mysql设置了主键(id),那他就会实现自增,插入数据时,无需指定id的值,但是oracle却无法实现主键 ...
最新文章
- asp.net 2.0中的弹出对话框
- 在大厂干了 5 年产品后,如今她裸辞回家开店去了
- Java网络编程笔记3
- python使用笔记:if __name__ == ‘__main__‘ 如何理解
- c++用一级运算比较大小_阿里百度腾讯 C/C++ 面试题总结,我全都告诉你!
- 每日一笑 | 今天是植树节,我想在你心里种点逼树
- IntelliJ IDEA for Mac 彻底卸载/彻底删除
- 翻译:Docker方式安装redmine
- 场内场外交易成本_选择场内基金还是场外基金,看这篇文章就够了
- ContentProvider简介
- UIWebView加载Loading...两种方法
- 【算法】赫夫曼编码 解码 实际应用 文件的编码 解码
- HTML meta元素
- 手机可以实现利用putty来管理Linux服务器
- linux下telnet批量验证某端口开放
- XP系统下如何把FAT32转换成NTFS格式的?
- 微观角度上,宇宙膨胀的影响是什么?
- java asyncexec,Display类的syncExec()和asyncExec()之间的区别
- HTTPS那些事(二)SSL证书
- 关于近段时间学习历史的点滴记录
热门文章
- 数学计算机电路基础,2019上“计算机电路基础”作业(五大题共16小题).docx
- android电池充电动画,Android 开机充电图标和充电动画效果
- aps后缀是什么文件_今日份知识分享:什么是源文件?
- 使用linux集体升级系统,一:Linux系统的升级
- c语言运算符优先级结合,C语言运算符优先级和结合性
- Android热修复Java类_Android 热修复(一)
- linux添加后门方法,超初级的linux后门制作方法
- go 判断切片是否存在某元素_Golang基础之切片
- Android开发:setAlpha()方法和常用RGB颜色表----颜色, r g b分量数值(int), 16进制表示 一一对应
- 基于JAVA+SpringBoot+Vue+Mybatis+MYSQL的社区疫情防控管理系统