Oracle自动增量

Oracle自动增量,oracle,auto-increment,procedure,Oracle,Auto Increment,Procedure,可能重复: 我在oracle中有一个表,我想让userid自动递增。。 一旦我使用sequence使其自动递增,并尝试使用procedure将其插入表中,我将sample.seq_userid放在哪里 如何插入用户ID?我必须在我的程序中申报吗 PROCEDURE insertExample ( name_in IN sample.name%TYPE, age_in IN sample.age%TYPE ) IS BEGIN INSERT INTO

可能重复:

我在oracle中有一个表,我想让userid自动递增。。 一旦我使用sequence使其自动递增,并尝试使用procedure将其插入表中,我将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;
这是我的更新

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;
您需要一个序列:

create sequence seq_user_id start with 1 increment by 1;
还有桌子上的扳机

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;
/
您需要一个序列:

create sequence seq_user_id start with 1 increment by 1;
还有桌子上的扳机

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;
/
严格地说,如果在INSERT语句中指定seq_user_id.NEXTVAL,例如在给定的示例中插入示例user_id、name、age值seq_user_id.NEXTVAL、name_in、age_in,则不需要触发器。在INSERT语句中指定序列而不是依赖触发器可能有性能优势,但使用INSERT INTO…SELECT可能比使用INSERT INTO…值更重要。严格来说,如果在INSERT语句中指定seq_user_id.NEXTVAL,则不需要触发器,例如,在给定的示例中,在示例user_id、name、age值seq_user_id.NEXTVAL、name_in、age_in中插入。在INSERT语句中指定序列而不是依赖触发器可能有性能优势,但是INSERT INTO…SELECT可能比INSERT INTO…值更重要。