Oracle之序列
2020-04-13 16:01:52来源:博客园 阅读 ()
一、序列概述
在Oracle中,可以用Sequence序列号生成器,为表中的行自动生成序列号,产生一组等间隔的数值(类型为数字)。其主要用途是生成表的主键值,可以在插入语句中引用,在插入之前,获取序列号nextval值,然后进行插入。在用序列号之前,首先得创建一个序列,然后就可以通过CURRY、NEXTVAL,获取当前表中返回sequence的当前值、下一个squence的值。
二、如何定义一个sequence?
1、PL/SQL工具创建:
create sequence 序列名称 --创建序列
start with --从几开始
increment by --每次增长多少
maxvalue | nomaxvalue --最大值
minvalue | nominvalue --最小值
cycle | nocycle --是否循环
cache | nocache ; --缓存的数量
三、如何使用sequence?
1、xml使用:
序列名.NEXTVAL -- 获取下一个sequence的值
序列名.CURRVAL -- 获取当前的sequence的值
注意: 第一次NEXTVAL返回的是初始值;随后的NEXTVAL会自动增加定义的INCREMENT BY值 然后返回增加后的值。
CURRVAL 总是返回当前sequence的值,但是在第一次NEXTVAL 初始化之后才能使用CURRVAL,否则会出错。Sequence永不回头的往下取数据,无论发是否生异常,回滚 。
2、注解使用:
@GeneratedValue和@SequenceGenerator是JPA标准注解,GeneratedValue用来定义生成策略,SequenceGenerator用来声明生成主键的序列;它们要联合使用才有效:
① 在Entity实体类中通过使用注解@SequenceGenerator声明定义好的序列,有两种声明方法,可以在类上进行声明,也可以在字段上进行声明
@SequenceGenerator(name=" ", sequenceName=" ", allocationSize =" ") :
name -- 表示生成策略名称,它被引用在@GeneratedValue中的“gernerator”值中。
sequenceName -- 表示生成策略用到的数据库序列名称。
initialValue -- 表示主键初始值,默认为0。
allocationSize -- 每次主键值增加的大小,默认为50。
②在主键字段上使用注解@GeneratedValue定义生成策略 (默认调用native策略),并引用声明好的序列
@GeneratedVlaue(strategy=GenerationType.IDENTITY 或 SEQUENCE ,generator=" ") :
strategy -- 表示生成策略;主键自增策略:identity是MySql对应的自增、sequence对应oracle的自增序列,native是根据所连接的数据库自动选择上诉两个或hilo策略
generator -- 表示声明好的生成策略,引用@SequenceGenerator中的"name"的值。
四、可以在哪些地方使用Sequence?
1、不包含子查询、snapshot、VIEW的 SELECT 语句;2、INSERT语句的子查询中;3、INSERT语句的VALUES中;4、UPDATE 的 SET中
五、如何删改Sequence?
1、DROP sequence xxx_seq;
2、如果要改变sequence中的初始值,必须先删除序列号然后再进行创建。或者是该sequence的owner,或者有ALTER ANY sequence权限才能改动sequence,直接用Alter语句进行sequence的更新。
原文链接:https://www.cnblogs.com/w-y-q/p/12692631.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- LeetCode 面试题33. 二叉搜索树的后序遍历序列 2020-05-22
- LeetCode 105. 从前序与中序遍历序列构造二叉树 2020-05-22
- MapperReduce序列化自定义分区作业 2020-05-20
- 关于序列化的 10 几个问题,你顶得住不?.md 2020-05-19
- Oracle SQLPlus导出数据到csv文件 2020-05-18
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash