2011-05-25 16 views
0

可能性の重複:私はシーケンスを使用することによって、それが自動インクリメントを行うと
Autoincrement in OracleのOracle自動インクリメント

私は、Oracleのテーブルを持っていると私は、ユーザーID自動インクリメントを作りたい... プロシージャを使用してテーブルに挿入しようとすると、どこにsample.seq_useridが置かれますか? 私はどのようにユーザーIDを挿入しますか?私は自分の手続きでそれを宣言しなければならないのですか?ここ

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; 

は、あなたが一連必要がある1つ

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; 

とトリガを、あなたはしないでください_need_ INSERTステートメントで 'seq_user_id.NEXTVAL'を指定した場合のトリガー与えられた例では 'INSERT INTO sample(user_id、name、age)VALUES(seq_user_id.NEXTVAL、name_in、age_in)'のようなテンションです。トリガーに頼るのではなく、INSERTステートメントでシーケンスを指定することにはパフォーマンス上の利点がありますが、INSERT INTO ... SELECTよりもINSERT INTO ... SELECTでより重要になります。 –

関連する問題