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;
  • 相关阅读:
    Find the Smallest K Elements in an Array
    Count of Smaller Number
    Number of Inversion Couple
    Delete False Elements
    Sort Array
    Tree Diameter
    Segment Tree Implementation
    Java Programming Mock Tests
    zz Morris Traversal方法遍历二叉树(非递归,不用栈,O(1)空间)
    Algorithm about SubArrays & SubStrings
  • 原文地址:https://www.cnblogs.com/king1302217/p/3287064.html
Copyright © 2011-2022 走看看