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>

     
  • 相关阅读:
    20190211 模拟训练 A. 大猫咪
    如何诊断节点重启问题
    诊断 Grid Infrastructure 启动问题 (文档 ID 1623340.1)
    bzoj4025 二分图
    root.sh脚本支持checkpoints文件实现重复运行
    [IOI2018] seats 排座位
    最常见的 5 个导致节点重新启动、驱逐或 CRS 意外重启的问题 (文档 ID 1524455.1)
    [IOI2018] werewolf 狼人
    OCR/Vote disk 维护操作: (添加/删除/替换/移动) (文档 ID 1674859.1)
    [POI2011]ROT-Tree Rotations
  • 原文地址:https://www.cnblogs.com/juanzila/p/8953473.html
Copyright © 2011-2022 走看看