zoukankan      html  css  js  c++  java
  • Oracle自增列

    一、介绍: 

    在设计数据库时,有时候希望表的某一列为自增列,例如编号,本文就介绍如何在oracle数据库中实现自增列,需要两个步骤:

    1)构建序列(sequence)

          在oracle中sequence就是所谓的序列号,每次取的时候它会自动增加,一般用在需要按序列号排序的地方。

    2)构建触发器(trigger)

        构建完序列后,就需要构建一个触发器,当往某一个表中插入数据时,触发器会从序列中取出一个序列号,插入到该表的自增列中

    二、示例:

    1、在oracle中创建一个表:USER

    create table USER
    (
      ID   NUMBER(8),
      NAME VARCHAR2(32),
      AGE  NUMBER(3)
    )
    ;

    2、创建一个sequence:seq_user_id

    create sequence seq_user_id
    minvalue 1
    maxvalue 99999999
    start with 1
    increment by 1
    nocache
    order;

    3、创建一个tirgger:trg_user_id

    CREATE OR REPLACE TRIGGER trg_user_id
    BEFORE INSERT ON USER
    FOR EACH ROW
    BEGIN
    SELECT seq_user_id.nextval INTO :new.id FROM dual;
    END;

    4、测试自增列,插入一条数据

    insert into user (name,age) values ('zhang',25);

    就可以看到数据库中新增了一条记录,

    id name age
    1 zhang 25

       

    三、备注:

    按照上面的步骤,就可以实现oracle数据库的自增列。某些情况下,我们希望数据库的自增列为字符串形式,例如user表的id为varchar2类型,此时如何实现自增列

    create table USER
    (
      ID   VARCHAR2(8),
      NAME VARCHAR2(32),
      AGE  NUMBER(3)
    )
    ;

    答案也很简单,只需要修改tirgger:trg_user_id如下:

    CREATE OR REPLACE TRIGGER trg_user_id
    BEFORE INSERT ON USER
    FOR EACH ROW
    BEGIN
    SELECT TO_CHAR(seq_user_id.nextval) INTO :new.id FROM dual;
    END;
  • 相关阅读:
    字符串与模式匹配算法(一):BF算法
    Spring MVC:HandlerMapping
    Spring MVC:DispatchServlet类
    Spring:面向切面编程的AOP
    Java:检查异常与未检查异常
    AOP源码解析:AspectJExpressionPointcutAdvisor类
    Vue+Webpack打包之后超过url-loader大小限制的图片在css的background-image中使用路径问题
    less
    ES6模块的import和export用法总结
    bootstrap4网格
  • 原文地址:https://www.cnblogs.com/king1302217/p/3287064.html
Copyright © 2011-2022 走看看