Oracle中使用觸發(fā)器(trigger)和序列(sequence)模擬實(shí)現(xiàn)自增列實(shí)例

字號:


    這篇文章主要介紹了Oracle中使用觸發(fā)器(trigger)和序列(sequence)模擬實(shí)現(xiàn)自增列實(shí)例,包含代碼實(shí)例,而且小編已經(jīng)測試過了哦,需要的朋友可以參考下。
    問題:在SQL Server數(shù)據(jù)庫中,有自增列這個(gè)字段屬性,使用起來也是很方便的。而在Oracle中卻沒有這個(gè)功能,該如何實(shí)現(xiàn)呢?
    答:在Oracle中雖然沒有自增列的說法,但卻可以通過觸發(fā)器(trigger)和序列(sequence)來模式實(shí)現(xiàn)。
    示例:
    1、建立表
    代碼如下:
    create table user 
    (  
        id   number(6) not null,  
        name   varchar2(30)   not null primary key 
    ) 
    2、建立序列SEQUENCE
    代碼如下:
    create sequence user_seq increment by 1 start with 1 minvalue 1 maxvalue 9999999999999 nocache order; 
    語法:
    CREATE SEQUENCE s_id NOMAXVALUE NOCYCLE
    --INCREMENT BY 1    -- 每次加幾個(gè)
    --START WITH 1      -- 從1開始計(jì)數(shù)
    --NOMAXVALUE        -- 不設(shè)置最大值
    --NOCYCLE       -- 一直累加,不循環(huán)
    --CACHE 10;     -- 緩存序列個(gè)數(shù),有助于提高效率,但可能造成跳號
    3、創(chuàng)建觸發(fā)器
    創(chuàng)建一個(gè)基于該表的before insert 觸發(fā)器,在觸發(fā)器中使用剛創(chuàng)建的SEQUENCE。
    代碼如下:
    create or replace trigger user_trigger  
    before insert on user 
    for each row  
    begin 
          select   user_seq.nextval  into:new.id from sys.dual ;  
    end; 
    下面就可以插入數(shù)據(jù)測試了。經(jīng)過本人證明,上述方法是可行的。