新插入记录的id字段的值是把已有的最大id加1
 序列和触发器怎么写

解决方案 »

  1.   

    创建序列 
    ---
    create sequence SEQ_TEMP_ID
    minvalue 1
    maxvalue 10000000000
    start with 1
    increment by 1
    cache 20;
    --- 查找改序列下一个值
    select  SEQ_TEMP_ID.NEXTVAL from dual
    ----创建触发器
    create or replace trigger add_Trigger
      before insert on kevin_test_1  
      for each row
    declare
      -- local variables here
      newvalue number;
    begin
        select SEQ_TEMP_ID.nextval into newvalue from dual;
        :new.personid:=newvalue;
    end add_Trigger;//这个触发器的值和主键那些你就自己替换了嘛
      

  2.   

    create sequence seqname..
    创建序列具体语法和参数你可以搜下用行级before触发器
    create or replace trigger TGNAME
    before insert on TABLENAME
    for each row
    begin
    :new.ID:=SEQNAME.nextval;
    --或者9i之前用 select SEQNAME.nextval into :new.ID from dual;
    end TGNAMW;
      

  3.   

    create sequence 序列名insert  into  xxx  values(....,序列名.nextval)
      

  4.   

    创建序列后,每次新增时用
    序列名.nextval 就可以自增了
      

  5.   

    一:创建一个序列实现递增create sequence sequence_name
      start with 1                --设定起始值
      increment by 1              --设定递增值
      maxvalue  999999999         --设定最大值
    二:创建一个触发器,引用序列的值,为了确保只能插入或者删除而不能修改,要考虑两种情况create or replace trigger trigger_name
    before insert or update on table_name
    for each row
    begin
        if inserting then
            select sequence_name.nextval into :new.column_name;
        end if;
        if updating('column_name') then
            raise_application_error('-20001','不能修改 column_name 列的值!');
        end if;
    end;
    说明:
        table_name  就是你要操作的表名
        column_name 就是你要递增的那个字段