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>

     
  • 相关阅读:
    python通过标准输入读取内容,读取键盘输入的内容?接收用户输入?
    Centos修改时间显示的时区,将UTC修改为CST
    python中注释的写法
    python中,数字类型计算
    python中,获取字符串的长度
    python中的字符串常量,是否支持通过下标的方式赋值
    python,如何获取字符串中的子字符串,部分字符串
    python中是否有单独的字符类型,通过下标的方式表示字符串中的字符
    python中,如何将两个变量值进行拼接
    python中,如有个非常长的字符串,在写的时候如何将其分隔
  • 原文地址:https://www.cnblogs.com/juanzila/p/8953473.html
Copyright © 2011-2022 走看看