Oracle之序列

2020-04-13 16:01:52来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

一、序列概述
在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
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:Sring MVC基于Java Config方式配置Mybatis, 无XML

下一篇:Java的关键!!从Paxos到ZooKeeper分布式一致性 原理与实践