2011-05-25 77 views
0

可能重複:
Autoincrement in Oracle甲骨文自動遞增

我在Oracle中一個表,我想使用戶ID自動增量.. 一旦我讓它自動遞增使用序列並嘗試插入到表使用過程中,我把我的sample.seq_userid 我如何插入userid?我必須在我的程序中聲明嗎?

PROCEDURE insertExample 
    (
    name_in IN sample.name%TYPE, 
    age_in IN sample.age%TYPE 
) 
    IS 

    BEGIN 

    INSERT INTO sample 
    (name, age) 
    VALUES 
    (name_in, age_in); 

    END insertExample; 

這裏是我的一個更新

PROCEDURE updateExample 
    (
    userid_in IN sample.userid%TYPE, 
    name_in IN sample.name%TYPE, 
    age_in IN sample.age%TYPE 
) 
    IS 

    BEGIN 

    UPDATE sample 
     SET name = name_in, 
      age = age_in 
    WHERE userid = userid_in; 


    END updateExample; 

回答

3

你需要一個序列:上表

CREATE TRIGGER user_id_trg 
    BEFORE insert 
    ON sample 
    FOR EACH ROW 
BEGIN 
     SELECT seq_user_id.NEXTVAL INTO :new.user_id FROM dual; 

END; 
/
+7

嚴格地說

create sequence seq_user_id start with 1 increment by 1; 

和扳機,你不如果您在INSERT站點中指定了'seq_user_id.NEXTVAL',則需要觸發一個觸發器例如,在給出的示例中,INSERT INTO sample(user_id,name,age)VALUES(seq_user_id.NEXTVAL,name_in,age_in)'。在INSERT語句中指定序列可能會有性能上的優勢,而不是依賴觸發器,但與INSERT INTO ... VALUES相比,這些對於INSERT INTO ... SELECT更重要。 – 2011-05-25 17:48:45