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数据库建立序列、使用序列实现主键自增...相关推荐

  1. oracle数据库主键自增序列_Oracle数据库主键自增

    Oracle数据库主键自增 在学习mysql时,我们很容易通过auto_increment就能实现主键自增的功能,但是在Oracle数据库中,是没有这个关键字的,所以也不能通过这样来实现主键自增.下面 ...

  2. Oracle数据库主键自增

    Oracle数据库主键自增 在学习mysql时,我们很容易通过auto_increment就能实现主键自增的功能,但是在Oracle数据库中,是没有这个关键字的,所以也不能通过这样来实现主键自增.下面 ...

  3. Navicat:设置Oracle数据库主键自增

    一. 创建如下表 Oracle数据库不同于Mysql.Sql Server数据库,Oracle数据库主键自增不能在建表时直接设置,而是需要通过序列和触发器进行设置! 二.创建序列 create seq ...

  4. mysql选择主键的原则_如何选择数据库的主键

    我们现在在思考一下,应该采用什么来作表的主键比较合理,申明一下,主键的设计没有一个定论,各人有各人的方法,哪怕同一个,在不同的项目中,也会采用不同的主键设计原则. 第一:编号作主键 此方法就是采用实际 ...

  5. 两个主键怎么设置tsql_如何在sql server中设置两个主键?

    展开全部 主键是数据库表的一个重要属性,建立主键可以避免表中存在完全相同的记录,也就是说主键在e68a8462616964757a686964616f31333365633938一张表中的记录值是唯一 ...

  6. oracle数据库主键自增序列_Oracle数据库序列详解

    前言: 做过web开发的人员基本上都知道,数据库表中的主键值有的时候我们会用数字类型的并且自增.这样mysql.sql server中的都可以使用工具创建表的时候很容易实现.但是oracle中没有设置 ...

  7. oracle数据库主键自增序列_oracle数据库ID自增长--序列

    什么是序列?在mysql中有一个主键自动增长的id,例如:uid number primary key auto_increment;在oracle中序列就是类似于主键自动增长,两者功能是一样的,只是 ...

  8. oracle中主键自增长,oracle 数据库主键自动增长方法

    oracle 数据库没有像 MYSQL一样有 自动ID增值 的功能,如要实现可以用触发器. 首先就是建立一个序列,序列有有自动增值的功能,再建立一个触发器. 如: 建立一个序列 CREATE SEQU ...

  9. sequence解决oracle数据库主键不自增

    工作这么多年.总算遇到一家数据库用oracle的企业了,由于oracle与mysql的不同,mysql设置了主键(id),那他就会实现自增,插入数据时,无需指定id的值,但是oracle却无法实现主键 ...

最新文章

  1. asp.net 2.0中的弹出对话框
  2. 在大厂干了 5 年产品后,如今她裸辞回家开店去了
  3. Java网络编程笔记3
  4. python使用笔记:if __name__ == ‘__main__‘ 如何理解
  5. c++用一级运算比较大小_阿里百度腾讯 C/C++ 面试题总结,我全都告诉你!
  6. 每日一笑 | 今天是植树节,我想在你心里种点逼树
  7. IntelliJ IDEA for Mac 彻底卸载/彻底删除
  8. 翻译:Docker方式安装redmine
  9. 场内场外交易成本_选择场内基金还是场外基金,看这篇文章就够了
  10. ContentProvider简介
  11. UIWebView加载Loading...两种方法
  12. 【算法】赫夫曼编码 解码 实际应用 文件的编码 解码
  13. HTML meta元素
  14. 手机可以实现利用putty来管理Linux服务器
  15. linux下telnet批量验证某端口开放
  16. XP系统下如何把FAT32转换成NTFS格式的?
  17. 微观角度上,宇宙膨胀的影响是什么?
  18. java asyncexec,Display类的syncExec()和asyncExec()之间的区别
  19. HTTPS那些事(二)SSL证书
  20. 关于近段时间学习历史的点滴记录

热门文章

  1. 数学计算机电路基础,2019上“计算机电路基础”作业(五大题共16小题).docx
  2. android电池充电动画,Android 开机充电图标和充电动画效果
  3. aps后缀是什么文件_今日份知识分享:什么是源文件?
  4. 使用linux集体升级系统,一:Linux系统的升级
  5. c语言运算符优先级结合,C语言运算符优先级和结合性
  6. Android热修复Java类_Android 热修复(一)
  7. linux添加后门方法,超初级的linux后门制作方法
  8. go 判断切片是否存在某元素_Golang基础之切片
  9. Android开发:setAlpha()方法和常用RGB颜色表----颜色, r g b分量数值(int), 16进制表示 一一对应
  10. 基于JAVA+SpringBoot+Vue+Mybatis+MYSQL的社区疫情防控管理系统