zoukankan      html  css  js  c++  java
  • oracle mysql的序列的新增、删除、修改及使用

    序列的使用

    1.序列介绍

    序列: 是 oracle 提供的用于产生一系列唯一数字的数据库对象。
    Oracle 序列(Sequence)主要用于生成流水号,在应用中经常会用到,特别是作为ID值,拿来做表主键。
    通过创建Oracle序列和触发器实现表的主键自增。
    序列的用途一般用来填充主键和计数。

    2.修改序列初始值

    有时候需要修改序列初始值,有以下几种方法:

    方法一:
        (1)删除序列;  (2)重新创建; 这个方法比较简单粗暴。
    drop sequence  sequence_name;
     
    create sequence   sequence_name
    minvalue 1                                                             //最小值
    maxvalue 999999999999999999999999999  //最大值
    start with  10                                                         //初始值
    increment by 1                                                     //步长
    cache 20;                                                               //序列号缓存
     
    方法二:
    通过Increment By来实现修改初始值。
    例如:若序列名称是seq_name,初始值是15,而现在要设置初始值为1015,Increment By值为:1000(1013-13)
    1) 执行:alter sequence seq_name increment by 1000;
    2) 执行:select seq_name .nextval from dual;
    3) 执行:alter sequence seq_name increment by 1;
    修改完成。
     

    CREATE SEQUENCE [ schema. ]sequence
    [ { INCREMENT BY | START WITH } integer
    | { MAXVALUE integer | NOMAXVALUE }
    | { MINVALUE integer | NOMINVALUE }
    | { CYCLE | NOCYCLE }
    | { CACHE integer | NOCACHE }
    | { ORDER | NOORDER }
    ];


    ALTER SEQUENCE [ schema. ]sequence
    { INCREMENT BY integer
    | { MAXVALUE integer | NOMAXVALUE }
    | { MINVALUE integer | NOMINVALUE }
    | { CYCLE | NOCYCLE }
    | { CACHE integer | NOCACHE }
    | { ORDER | NOORDER }
    };

    1)结论一:在初创建的Sequence上第一次使用nextval的时候,得到是初始值,不是初始值加一!
    2)结论二:第一次NEXTVAL初始化之后才能使用CURRVAL取值;
    3)结论三:可以在一条SQL语句中同时得到nextval和currval值;
    4)结论四:从上面的alter sequence的语法看,可以得到这样一个结论,无法使用alter语句修改序列的当前值。
     
    使用(在插入语句中使用)

    <insert id="insert" parameterType="com.test.domain.Student"
    useGeneratedKeys="true" keyProperty="Id">
    <selectKey resultType="int" order="BEFORE" keyProperty="Id">
    select SEQ_STUDENT_ID.nextval from dual
    </selectKey>
    insert into student
    <trim prefix="(" suffix=")" suffixOverrides=",">
    <if test="id!= null">
    ID,
    </if>
    <if test="name!= null">
    NAME,
    </if>
    </trim>
    <trim prefix="values (" suffix=")" suffixOverrides=",">
    <if test="id != null">
    #{id,jdbcType=INTEGER},
    </if>
    <if test="name != null">
    #{name,jdbcType=INTEGER},
    </if>
    </trim>
    </insert>

     
  • 相关阅读:
    解决vs code 内置终端,字体间隔过大问题。(linux centos7 ubuntu成功)
    安装Epson打印机但因lsb依赖错误而中断的驱动程序
    ubuntu 权限不够,解决办法,无法获得锁 /var/lib/dpkg/lock
    ubuntu 安装WPS
    GNU GRUB引导的默认启动项是ubuntu
    网络编程基础
    反射、特殊双下方法、单例模式
    异常处理
    封装、多态、类的约束、类的私有成员
    多继承、经典类与新式类、新式类的C3算法详解
  • 原文地址:https://www.cnblogs.com/juanzila/p/8953473.html
Copyright © 2011-2022 走看看